diff options
Diffstat (limited to 'ivi-layermanagement-examples')
-rw-r--r-- | ivi-layermanagement-examples/EGLWLInputEventExample/include/WLContext.h | 28 | ||||
-rw-r--r-- | ivi-layermanagement-examples/EGLWLInputEventExample/src/WLContext.cpp | 73 |
2 files changed, 39 insertions, 62 deletions
diff --git a/ivi-layermanagement-examples/EGLWLInputEventExample/include/WLContext.h b/ivi-layermanagement-examples/EGLWLInputEventExample/include/WLContext.h index 6282236..891d93f 100644 --- a/ivi-layermanagement-examples/EGLWLInputEventExample/include/WLContext.h +++ b/ivi-layermanagement-examples/EGLWLInputEventExample/include/WLContext.h @@ -27,15 +27,18 @@ struct serverinfo; class WLContext { + struct seat_data { + struct wl_seat *wlSeat; + struct wl_keyboard *wlKeyboard; + struct wl_pointer *wlPointer; + struct wl_touch *wlTouch; + class WLContext *ctx; + }; // properties private: struct wl_display* m_wlDisplay; struct wl_registry* m_wlRegistry; struct wl_compositor* m_wlCompositor; - struct wl_seat* m_wlSeat; - struct wl_pointer* m_wlPointer; - struct wl_keyboard* m_wlKeyboard; - struct wl_touch* m_wlTouch; struct serverinfo* m_wlServerInfo; uint32_t m_connectionId; @@ -55,10 +58,6 @@ public: struct wl_compositor* GetWLCompositor() const; struct wl_display* GetWLDisplay() const; struct wl_registry* GetWLRegistry() const; - struct wl_pointer* GetWLPointer() const; - struct wl_keyboard* GetWLKeyboard() const; - struct wl_touch* GetWLTouch() const; - struct wl_seat* GetWLSeat() const; struct wl_pointer_listener* GetWLPointerListener() const; struct wl_keyboard_listener* GetWLKeyboardListener() const; struct wl_touch_listener* GetWLTouchListener() const; @@ -93,10 +92,6 @@ protected: inline struct wl_compositor* WLContext::GetWLCompositor() const { return m_wlCompositor; } inline struct wl_display* WLContext::GetWLDisplay() const { return m_wlDisplay; } inline struct wl_registry* WLContext::GetWLRegistry() const { return m_wlRegistry; } -inline struct wl_pointer* WLContext::GetWLPointer() const { return m_wlPointer; } -inline struct wl_keyboard* WLContext::GetWLKeyboard() const { return m_wlKeyboard; } -inline struct wl_touch* WLContext::GetWLTouch() const { return m_wlTouch; } -inline struct wl_seat* WLContext::GetWLSeat() const { return m_wlSeat; } inline struct wl_pointer_listener* WLContext::GetWLPointerListener() const { return m_wlPointerListener; } inline struct wl_keyboard_listener* WLContext::GetWLKeyboardListener() const @@ -104,20 +99,11 @@ inline struct wl_keyboard_listener* WLContext::GetWLKeyboardListener() const inline struct wl_touch_listener* WLContext::GetWLTouchListener() const { return m_wlTouchListener; } inline uint32_t WLContext::GetConnectionId() const { return m_connectionId; } - inline void WLContext::SetWLCompositor(struct wl_compositor* wlCompositor) { m_wlCompositor = wlCompositor; } inline void WLContext::SetWLServerInfo(struct serverinfo* wlServerInfo) { m_wlServerInfo = wlServerInfo; } -inline void WLContext::SetWLSeat(struct wl_seat* wlSeat) - { m_wlSeat = wlSeat; } inline void WLContext::SetConnectionId(uint32_t connectionId) { m_connectionId = connectionId; } -inline void WLContext::SetWLPointer(struct wl_pointer* wlPointer) - { m_wlPointer = wlPointer; } -inline void WLContext::SetWLKeyboard(struct wl_keyboard* wlKeyboard) - { m_wlKeyboard = wlKeyboard; } -inline void WLContext::SetWLTouch(struct wl_touch* wlTouch) - { m_wlTouch = wlTouch; } #endif /* _WLCONTEXT_H_ */ diff --git a/ivi-layermanagement-examples/EGLWLInputEventExample/src/WLContext.cpp b/ivi-layermanagement-examples/EGLWLInputEventExample/src/WLContext.cpp index d8942f5..4786443 100644 --- a/ivi-layermanagement-examples/EGLWLInputEventExample/src/WLContext.cpp +++ b/ivi-layermanagement-examples/EGLWLInputEventExample/src/WLContext.cpp @@ -48,9 +48,6 @@ WLContext::WLContext() : m_wlDisplay(NULL) , m_wlRegistry(NULL) , m_wlCompositor(NULL) -, m_wlSeat(NULL) -, m_wlPointer(NULL) -, m_wlTouch(NULL) , m_wlServerInfo(NULL) , m_connectionId(0) , m_wlPointerListener(NULL) @@ -98,10 +95,12 @@ WLContext::RegistryHandleGlobal(void* data, } if (!strcmp(interface, "wl_seat")){ - struct wl_seat* wlSeat = (wl_seat*)wl_registry_bind( - registry, name, &wl_seat_interface, 1); - wl_seat_add_listener(wlSeat, &seatListener, data); - surface->SetWLSeat(wlSeat); + struct WLContext::seat_data *seat_data = (struct WLContext::seat_data *)calloc(1, sizeof *seat_data); + seat_data->ctx = surface; + seat_data->wlSeat = (wl_seat*)wl_registry_bind( + registry, name, &wl_seat_interface, 1); + wl_seat_add_listener(seat_data->wlSeat, &seatListener, + (void *)seat_data); } } while (0); } @@ -122,50 +121,42 @@ WLContext::ServerInfoListener(void* data, void WLContext::SeatHandleCapabilities(void* data, struct wl_seat* seat, uint32_t caps) { - WL_UNUSED(seat); - - WLContext* context = static_cast<WLContext*>(data); + struct WLContext::seat_data* context = + static_cast<struct WLContext::seat_data*>(data); assert(context); - struct wl_seat* wlSeat = context->GetWLSeat(); - if (!wlSeat) - return; - - struct wl_pointer* wlPointer = context->GetWLPointer(); - if ((caps & WL_SEAT_CAPABILITY_POINTER) && !wlPointer){ - wlPointer = wl_seat_get_pointer(wlSeat); - wl_pointer_set_user_data(wlPointer, data); - wl_pointer_add_listener(wlPointer, context->GetWLPointerListener(), data); + if ((caps & WL_SEAT_CAPABILITY_POINTER) && !context->wlPointer){ + context->wlPointer = wl_seat_get_pointer(seat); + wl_pointer_set_user_data(context->wlPointer, data); + wl_pointer_add_listener(context->wlPointer, + context->ctx->GetWLPointerListener(), data); } else - if (!(caps & WL_SEAT_CAPABILITY_POINTER) && wlPointer){ - wl_pointer_destroy(wlPointer); - wlPointer = NULL; + if (!(caps & WL_SEAT_CAPABILITY_POINTER) && context->wlPointer){ + wl_pointer_destroy(context->wlPointer); + context->wlPointer = NULL; } - context->SetWLPointer(wlPointer); - struct wl_keyboard* wlKeyboard = context->GetWLKeyboard(); - if ((caps & WL_SEAT_CAPABILITY_KEYBOARD) && !wlKeyboard){ - wlKeyboard = wl_seat_get_keyboard(wlSeat); - wl_keyboard_set_user_data(wlKeyboard, data); - wl_keyboard_add_listener(wlKeyboard, context->GetWLKeyboardListener(), data); + if ((caps & WL_SEAT_CAPABILITY_KEYBOARD) && !context->wlKeyboard){ + context->wlKeyboard = wl_seat_get_keyboard(seat); + wl_keyboard_set_user_data(context->wlKeyboard, data); + wl_keyboard_add_listener(context->wlKeyboard, + context->ctx->GetWLKeyboardListener(), data); } else - if (!(caps & WL_SEAT_CAPABILITY_KEYBOARD) && wlKeyboard){ - wl_keyboard_destroy(wlKeyboard); - wlKeyboard = NULL; + if (!(caps & WL_SEAT_CAPABILITY_KEYBOARD) && context->wlKeyboard){ + wl_keyboard_destroy(context->wlKeyboard); + context->wlKeyboard = NULL; } - context->SetWLKeyboard(wlKeyboard); - struct wl_touch* wlTouch = context->GetWLTouch(); - if ((caps & WL_SEAT_CAPABILITY_TOUCH) && !wlTouch){ - wlTouch = wl_seat_get_touch(wlSeat); - wl_touch_set_user_data(wlTouch, data); - wl_touch_add_listener(wlTouch, context->GetWLTouchListener(), data); + if ((caps & WL_SEAT_CAPABILITY_TOUCH) && !context->wlTouch){ + context->wlTouch = wl_seat_get_touch(seat); + wl_touch_set_user_data(context->wlTouch, data); + wl_touch_add_listener(context->wlTouch, context->ctx->GetWLTouchListener(), data); } else - if (!(caps & WL_SEAT_CAPABILITY_TOUCH) && wlTouch){ - wl_touch_destroy(wlTouch); - wlTouch = NULL; + if (!(caps & WL_SEAT_CAPABILITY_TOUCH) && context->wlTouch){ + wl_touch_destroy(context->wlTouch); + context->wlTouch = NULL; } - context->SetWLTouch(wlTouch); + wl_display_dispatch(context->ctx->GetWLDisplay()); } ////////////////////////////////////////////////////////////////////////////// |