summaryrefslogtreecommitdiff
path: root/ivi-layermanagement-examples
diff options
context:
space:
mode:
authorEmre Ucan <eucan@de.adit-jv.com>2015-04-07 14:36:35 +0200
committerNobuhiko Tanibata <nobuhiko_tanibata@xddp.denso.co.jp>2015-05-13 16:06:28 +0900
commit880ab550c8f0fc3fa1bbf6e6873e96f3dad1380a (patch)
treef87603ab35258e0048863766de0f0f661d84167c /ivi-layermanagement-examples
parent2ec7d6cba605f96e562f8632183304667be72684 (diff)
downloadwayland-ivi-extension-880ab550c8f0fc3fa1bbf6e6873e96f3dad1380a.tar.gz
EGLWLInputEventExample: make it multi-seat capable
Signed-off-by: Emre Ucan <eucan@de.adit-jv.com>
Diffstat (limited to 'ivi-layermanagement-examples')
-rw-r--r--ivi-layermanagement-examples/EGLWLInputEventExample/include/WLContext.h28
-rw-r--r--ivi-layermanagement-examples/EGLWLInputEventExample/src/WLContext.cpp73
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());
}
//////////////////////////////////////////////////////////////////////////////