2 * Copyright (c) 2013-2014, TOYOTA MOTOR CORPORATION.
4 * This program is licensed under the terms and conditions of the
5 * Apache License, version 2.0. The full text of the Apache License is at
6 * http://www.apache.org/licenses/LICENSE-2.0
10 //==========================================================================
12 * @file CicoSCWlWinMgrIF.h
14 * @brief This file is definition of CicoSCWlWinMgrIF class
16 //==========================================================================
17 #ifndef __CICO_SC_WL_WINMGR_IF_H__
18 #define __CICO_SC_WL_WINMGR_IF_H__
20 #include <wayland-client.h>
21 #include <ilm_client.h>
22 #include <ilm_control.h>
23 #include <ico_window_mgr-client-protocol.h>
24 #include <ivi-controller-client-protocol.h>
25 #include <ivi-application-client-protocol.h>
27 #include "ico_syc_type.h"
28 #include "CicoSCWaylandIF.h"
29 #include "CicoSCWindow.h"
31 //--------------------------------------------------------------------------
33 * @brief This class is wayland interface of multi window manager
35 //--------------------------------------------------------------------------
36 struct creation_surface_wait {
37 struct creation_surface_wait *next;
40 struct wl_surface *surface;
42 char title[ICO_SYC_MAX_WINNAME_LEN];
45 class CicoSCWlWinMgrIF : public CicoSCWaylandIF {
47 virtual void initInterface(void *data,
48 struct wl_registry *registry,
50 const char *interface,
53 virtual void activeCB(void *data,
54 struct ico_window_mgr *ico_window_mgr,
58 virtual void mapSurfaceCB(void *data,
59 struct ico_window_mgr *ico_window_mgr,
68 virtual void updateSurfaceCB(void *data,
69 struct ico_window_mgr *ico_window_mgr,
79 virtual void destroySurfaceCB(void *data,
80 struct ico_window_mgr *ico_window_mgr,
83 virtual void updateWinnameCB(uint32_t surfaceid,
86 virtual void outputGeometryCB(void *data,
87 struct wl_output *wl_output,
90 int32_t physical_width,
91 int32_t physical_height,
97 virtual void outputModeCB(void *data,
98 struct wl_output *wl_output,
104 virtual void createSurfaceCB(void *data,
105 struct ivi_controller *ivi_controller,
106 uint32_t id_surface);
108 static void wlIviCtrlRemoveSurface(uint32_t id_surface);
111 // default constructor
115 virtual ~CicoSCWlWinMgrIF();
117 // assignment operator
118 CicoSCWlWinMgrIF& operator=(const CicoSCWlWinMgrIF &object);
121 CicoSCWlWinMgrIF(const CicoSCWlWinMgrIF &object);
123 // wrapper function ico_window_mgr_set_window_layer
124 void setWindowLayer(uint32_t surfaceid, uint32_t layer, uint32_t oldlayer);
126 // wrapper function ico_window_mgr_set_positionsize
127 void setPositionsize(uint32_t surfaceid, uint32_t node,
128 int32_t x, int32_t y, int32_t width, int32_t height);
130 // wrapper function ico_window_mgr_set_visible
131 void setVisible(uint32_t surfaceid, int32_t visible);
133 // wrapper function of ico_window_mgr_set_animation
134 void setAnimation(uint32_t surfaceid, int32_t type,
135 const char *animation, int32_t time);
137 // wrapper function of ico_window_mgr_set_active
138 void setActive(uint32_t surfaceid, int32_t active);
140 // wrapper function of ico_window_mgr_set_layer_visible
141 void setLayerVisible(uint32_t layer, int32_t visible);
143 // wrapper function of ilm_takeSurfaceScreenshot
144 void setmapGet(int surfaceid, const char *filepath);
146 // wrapper function of ico_window_mgr_map_surface
147 void mapSurface(uint32_t surfaceid, int32_t framerate, const char *filepath);
149 // wrapper function of ico_window_mgr_unmap_surface
150 void unmapSurface(uint32_t surfaceid);
152 static const char *wlIviCtrlGetSurfaceWaiting(uint32_t id_surface, int *pid);
155 // ico_window_mgr(Multi Window Manager) callback functions
156 static void wlActiveCB(void *data,
157 struct ico_window_mgr *ico_window_mgr,
161 static void wlMapSurfaceCB(void *data,
162 struct ico_window_mgr *ico_window_mgr,
171 static void wlUpdateSurfaceCB(void *data,
172 struct ico_window_mgr *ico_window_mgr,
182 static void wlDestroySurfaceCB(void *data,
183 struct ico_window_mgr *ico_window_mgr,
186 static void wlOutputGeometryCB(void *data,
187 struct wl_output *wl_output,
190 int32_t physical_width,
191 int32_t physical_height,
197 static void wlOutputModeCB(void *data,
198 struct wl_output *wl_output,
204 static void wlIviAppErrorCB(void *data,
205 struct ivi_application *ivi_application,
207 const char *error_text);
209 static void wlIviAppNativeShellInfoCB(void *data,
210 struct ivi_application *ivi_application,
213 static void wlIviCtrlScreenCB(void *data,
214 struct ivi_controller *ivi_controller,
216 struct ivi_controller_screen *screen);
218 static void wlIviCtrlLayerCB(void *data,
219 struct ivi_controller *ivi_controller,
222 static void wlIviCtrlSurfaceCB(void *data,
223 struct ivi_controller *ivi_controller,
224 uint32_t id_surface);
226 static void wlIviCtrlErrorCB(void *data,
227 struct ivi_controller *ivi_controller,
231 const char *error_text);
233 static void wlIviCtrlNativeHandleCB(void *data,
234 struct ivi_controller *ivi_controller,
235 struct wl_surface *surface);
238 // ico_window_mgr listener
239 struct ico_window_mgr_listener m_listener;
241 // wayland output listener
242 struct wl_output_listener m_wlOutputListener;
244 // genivi ivi-application listener
245 struct ivi_application_listener m_ivi_app_listener;
247 // genivi ivi-controller listener
248 struct ivi_controller_listener m_ivi_ctrl_listener;
250 // Wayland's Window Manager PlugIn instance
251 static struct ico_window_mgr *m_winmgr;
253 // Wayland's genivi ivi_application instance
254 static struct ivi_application *m_ivi_app;
256 // Wayland's genivi ivi_controller instance
257 static struct ivi_controller *m_ivi_ctrl;
259 // Wayland's genivi ivi_controller_surface instance
260 static struct ivi_controller_surface *m_ivi_ctrl_surf;
262 // wayland output instance
263 static struct wl_output *m_wloutput;
265 // surface id for wayland/weston applications
266 static int m_id_surface;
268 // creation surface title name
269 static struct creation_surface_wait *m_wait_surface_creation;
270 static struct creation_surface_wait *m_free_surface_creation;
272 #endif // __CICO_SC_WL_WINMGR_IF_H__
273 // vim:set expandtab ts=4 sw=4: