summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt2
-rw-r--r--ivi-input-modules/ivi-input-controller/CMakeLists.txt2
-rw-r--r--ivi-layermanagement-api/ilmClient/CMakeLists.txt2
-rw-r--r--ivi-layermanagement-api/ilmCommon/CMakeLists.txt2
-rw-r--r--ivi-layermanagement-api/ilmControl/CMakeLists.txt2
-rw-r--r--ivi-layermanagement-api/ilmInput/CMakeLists.txt2
-rw-r--r--ivi-layermanagement-examples/simple-weston-client/src/simple-weston-client.c66
-rw-r--r--protocol/CMakeLists.txt2
-rw-r--r--weston-ivi-shell/CMakeLists.txt2
-rw-r--r--weston-ivi-shell/src/ivi-controller.c4
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);