diff options
-rw-r--r-- | ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt | 2 | ||||
-rw-r--r-- | ivi-input-modules/ivi-input-controller/CMakeLists.txt | 2 | ||||
-rw-r--r-- | ivi-layermanagement-api/ilmClient/CMakeLists.txt | 2 | ||||
-rw-r--r-- | ivi-layermanagement-api/ilmCommon/CMakeLists.txt | 2 | ||||
-rw-r--r-- | ivi-layermanagement-api/ilmControl/CMakeLists.txt | 2 | ||||
-rw-r--r-- | ivi-layermanagement-api/ilmInput/CMakeLists.txt | 2 | ||||
-rw-r--r-- | ivi-layermanagement-examples/simple-weston-client/src/simple-weston-client.c | 66 | ||||
-rw-r--r-- | protocol/CMakeLists.txt | 2 | ||||
-rw-r--r-- | weston-ivi-shell/CMakeLists.txt | 2 | ||||
-rw-r--r-- | weston-ivi-shell/src/ivi-controller.c | 4 |
10 files changed, 61 insertions, 25 deletions
diff --git a/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt b/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt index 101d773..e9544ef 100644 --- a/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt +++ b/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt @@ -66,5 +66,5 @@ target_link_libraries(${PROJECT_NAME} ${LIBS}) install ( TARGETS ${PROJECT_NAME} - LIBRARY DESTINATION lib${LIB_SUFFIX}/weston + LIBRARY DESTINATION ${WESTON_LIBDIR}/weston ) diff --git a/ivi-input-modules/ivi-input-controller/CMakeLists.txt b/ivi-input-modules/ivi-input-controller/CMakeLists.txt index abaf599..62b08c8 100644 --- a/ivi-input-modules/ivi-input-controller/CMakeLists.txt +++ b/ivi-input-modules/ivi-input-controller/CMakeLists.txt @@ -91,5 +91,5 @@ target_link_libraries(${PROJECT_NAME} ${LIBS}) install ( TARGETS ${PROJECT_NAME} - LIBRARY DESTINATION lib${LIB_SUFFIX}/weston + LIBRARY DESTINATION ${WESTON_LIBDIR}/weston ) diff --git a/ivi-layermanagement-api/ilmClient/CMakeLists.txt b/ivi-layermanagement-api/ilmClient/CMakeLists.txt index 127b951..3ccb322 100644 --- a/ivi-layermanagement-api/ilmClient/CMakeLists.txt +++ b/ivi-layermanagement-api/ilmClient/CMakeLists.txt @@ -78,7 +78,7 @@ target_link_libraries(${PROJECT_NAME} install ( TARGETS ${PROJECT_NAME} - LIBRARY DESTINATION lib${LIB_SUFFIX} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) install ( diff --git a/ivi-layermanagement-api/ilmCommon/CMakeLists.txt b/ivi-layermanagement-api/ilmCommon/CMakeLists.txt index dba855c..7cc314a 100644 --- a/ivi-layermanagement-api/ilmCommon/CMakeLists.txt +++ b/ivi-layermanagement-api/ilmCommon/CMakeLists.txt @@ -53,7 +53,7 @@ add_dependencies(${PROJECT_NAME} install ( TARGETS ${PROJECT_NAME} - LIBRARY DESTINATION lib${LIB_SUFFIX} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) install ( diff --git a/ivi-layermanagement-api/ilmControl/CMakeLists.txt b/ivi-layermanagement-api/ilmControl/CMakeLists.txt index b0e6b22..69ff2bc 100644 --- a/ivi-layermanagement-api/ilmControl/CMakeLists.txt +++ b/ivi-layermanagement-api/ilmControl/CMakeLists.txt @@ -100,7 +100,7 @@ target_link_libraries(${PROJECT_NAME} ${LIBS}) install ( TARGETS ${PROJECT_NAME} - LIBRARY DESTINATION lib${LIB_SUFFIX} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) install ( diff --git a/ivi-layermanagement-api/ilmInput/CMakeLists.txt b/ivi-layermanagement-api/ilmInput/CMakeLists.txt index f2ed324..3d8b46b 100644 --- a/ivi-layermanagement-api/ilmInput/CMakeLists.txt +++ b/ivi-layermanagement-api/ilmInput/CMakeLists.txt @@ -81,7 +81,7 @@ target_link_libraries(${PROJECT_NAME} ${LIBS}) install ( TARGETS ${PROJECT_NAME} - LIBRARY DESTINATION lib${LIB_SUFFIX} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) install ( diff --git a/ivi-layermanagement-examples/simple-weston-client/src/simple-weston-client.c b/ivi-layermanagement-examples/simple-weston-client/src/simple-weston-client.c index 1434c31..37a942a 100644 --- a/ivi-layermanagement-examples/simple-weston-client/src/simple-weston-client.c +++ b/ivi-layermanagement-examples/simple-weston-client/src/simple-weston-client.c @@ -29,6 +29,7 @@ #include <sys/mman.h> #include <assert.h> #include <pthread.h> +#include <sys/signalfd.h> #include <signal.h> #include <poll.h> @@ -90,6 +91,7 @@ typedef struct _WaylandContext { int pipefd[2]; #endif uint8_t enable_cursor; + int signal_fd; }WaylandContextStruct; struct debug_stream { @@ -751,21 +753,39 @@ weston_dlt_thread_function(void *data) #endif static void -signal_int(int signum) +signal_int(int signal_fd) { + struct signalfd_siginfo fdsi; + + if (read(signal_fd, &fdsi, sizeof(fdsi)) != sizeof(fdsi)) { + fprintf(stderr, "reading signalfd failed: %s\n", + strerror(errno)); + return; + } + + fprintf(stderr, "simple-weston-client: caught signal %d \n", + fdsi.ssi_signo); + running = 0; } static int -display_poll(struct wl_display *display, short int events) +display_poll(struct wl_display *display, int signal_fd, + short int events) { int ret; - struct pollfd pfd[1]; + struct pollfd pfd[2]; pfd[0].fd = wl_display_get_fd(display); pfd[0].events = events; + pfd[1].fd = signal_fd; + pfd[1].events = POLLIN; + do { - ret = poll(pfd, 1, -1); + ret = poll(pfd, 2, -1); + + if (ret > 0 && pfd[1].revents) + signal_int(signal_fd); } while (ret == -1 && errno == EINTR && running); if(0 == running) @@ -779,9 +799,11 @@ display_poll(struct wl_display *display, short int events) * the poll is continuing because the generated errno is EINTR, * so added running flag also to decide whether to continue polling or not */ static int -display_dispatch(struct wl_display *display) +display_dispatch(WaylandContextStruct *wlcontext) { int ret; + int signal_fd = wlcontext->signal_fd; + struct wl_display *display = wlcontext->wl_display; if (wl_display_prepare_read(display) == -1) return wl_display_dispatch_pending(display); @@ -792,7 +814,7 @@ display_dispatch(struct wl_display *display) if (ret != -1 || errno != EAGAIN) break; - if (display_poll(display, POLLOUT) == -1) { + if (display_poll(display, signal_fd, POLLOUT) == -1) { wl_display_cancel_read(display); return -1; } @@ -805,7 +827,7 @@ display_dispatch(struct wl_display *display) return -1; } - if (display_poll(display, POLLIN) == -1) { + if (display_poll(display, signal_fd, POLLIN) == -1) { wl_display_cancel_read(display); return -1; } @@ -821,16 +843,28 @@ int main (int argc, const char * argv[]) WaylandContextStruct* wlcontext; BkGndSettingsStruct* bkgnd_settings; - struct sigaction sigint; int ret = 0; - - sigint.sa_handler = signal_int; - sigemptyset(&sigint.sa_mask); - sigaction(SIGINT, &sigint, NULL); - sigaction(SIGTERM, &sigint, NULL); - sigaction(SIGSEGV, &sigint, NULL); + sigset_t mask; wlcontext = (WaylandContextStruct*)calloc(1, sizeof(WaylandContextStruct)); + wlcontext->signal_fd = -1; + + ret = sigemptyset(&mask); + sigaddset(&mask, SIGINT); + sigaddset(&mask, SIGTERM); + ret = sigprocmask(SIG_BLOCK, &mask, NULL); + if (ret == -1) { + fprintf(stderr, "sigprocmask failed with error '%s'\n", + strerror(errno)); + return -1; + } + + wlcontext->signal_fd = signalfd(-1, &mask, SFD_NONBLOCK | SFD_CLOEXEC); + if (wlcontext->signal_fd < 0) { + fprintf(stderr, "invalid signalfd file descriptor. error '%s'\n", + strerror(errno)); + goto ErrorSignalFd; + } /*get bkgnd settings and create shm-surface*/ bkgnd_settings = get_bkgnd_settings_cursor_info(wlcontext); @@ -883,7 +917,7 @@ int main (int argc, const char * argv[]) draw_bkgnd_surface(wlcontext); while (running && (ret != -1)) - ret = display_dispatch(wlcontext->wl_display); + ret = display_dispatch(wlcontext); Error: #ifdef LIBWESTON_DEBUG_PROTOCOL @@ -908,6 +942,8 @@ ErrorContext: destroy_wayland_context(wlcontext); free(bkgnd_settings); + close(wlcontext->signal_fd); +ErrorSignalFd: free(wlcontext); return 0; diff --git a/protocol/CMakeLists.txt b/protocol/CMakeLists.txt index 548c8ba..7257336 100644 --- a/protocol/CMakeLists.txt +++ b/protocol/CMakeLists.txt @@ -70,7 +70,7 @@ set_target_properties(${PROJECT_NAME} PROPERTIES install( TARGETS ${PROJECT_NAME} - LIBRARY DESTINATION lib${LIB_SUFFIX} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) install( diff --git a/weston-ivi-shell/CMakeLists.txt b/weston-ivi-shell/CMakeLists.txt index 2eeba66..2868481 100644 --- a/weston-ivi-shell/CMakeLists.txt +++ b/weston-ivi-shell/CMakeLists.txt @@ -89,5 +89,5 @@ target_link_libraries(${PROJECT_NAME} ${LIBS}) install ( TARGETS ${PROJECT_NAME} - LIBRARY DESTINATION lib${LIB_SUFFIX}/weston + LIBRARY DESTINATION ${WESTON_LIBDIR}/weston ) diff --git a/weston-ivi-shell/src/ivi-controller.c b/weston-ivi-shell/src/ivi-controller.c index 61cfdb6..5d0452b 100644 --- a/weston-ivi-shell/src/ivi-controller.c +++ b/weston-ivi-shell/src/ivi-controller.c @@ -1429,14 +1429,14 @@ controller_screen_get(struct wl_client *client, int32_t layer_count, i; uint32_t id; - lyt = iviscrn->shell->interface; - if (!iviscrn) { ivi_wm_screen_send_error(resource, IVI_WM_SCREEN_ERROR_NO_SCREEN, "the output is already destroyed"); return; } + lyt = iviscrn->shell->interface; + if (param & IVI_WM_PARAM_RENDER_ORDER) { lyt->get_layers_on_screen(iviscrn->output, &layer_count, &layer_list); |