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,
69 virtual void outputGeometryCB(void *data,
70 struct wl_output *wl_output,
73 int32_t physical_width,
74 int32_t physical_height,
80 virtual void outputModeCB(void *data,
81 struct wl_output *wl_output,
87 virtual void createSurfaceCB(void *data,
88 struct ivi_controller *ivi_controller,
91 static void wlIviCtrlRemoveSurface(uint32_t id_surface);
94 // default constructor
98 virtual ~CicoSCWlWinMgrIF();
100 // assignment operator
101 CicoSCWlWinMgrIF& operator=(const CicoSCWlWinMgrIF &object);
104 CicoSCWlWinMgrIF(const CicoSCWlWinMgrIF &object);
106 // wrapper function ico_window_mgr_set_window_layer
107 void setWindowLayer(uint32_t surfaceid, uint32_t layer, uint32_t oldlayer);
109 // wrapper function ico_window_mgr_set_positionsize
110 void setPositionsize(uint32_t surfaceid, uint32_t node,
111 int32_t x, int32_t y, int32_t width,
112 int32_t height, int32_t flags);
114 // wrapper function ico_window_mgr_set_visible
115 void setVisible(uint32_t surfaceid, int32_t visible,
116 int32_t raise, int32_t flags);
118 // wrapper function of ico_window_mgr_set_animation
119 void setAnimation(uint32_t surfaceid, int32_t type,
120 const char *animation, int32_t time);
122 // wrapper function of ico_window_mgr_set_active
123 void setActive(uint32_t surfaceid, int32_t active);
125 // wrapper function of ico_window_mgr_set_layer_visible
126 void setLayerVisible(uint32_t layer, int32_t visible);
128 // wrapper function of ilm_takeSurfaceScreenshot
129 void setmapGet(int surfaceid, const char *filepath);
131 // wrapper function of ico_window_mgr_map_surface
132 void mapSurface(uint32_t surfaceid, int32_t framerate, const char *filepath);
134 // wrapper function of ico_window_mgr_unmap_surface
135 void unmapSurface(uint32_t surfaceid);
137 static const char *wlIviCtrlGetSurfaceWaiting(uint32_t id_surface, int *pid);
140 // ico_window_mgr(Multi Window Manager) callback functions
141 static void wlActiveCB(void *data,
142 struct ico_window_mgr *ico_window_mgr,
146 static void wlMapSurfaceCB(void *data,
147 struct ico_window_mgr *ico_window_mgr,
157 static void wlOutputGeometryCB(void *data,
158 struct wl_output *wl_output,
161 int32_t physical_width,
162 int32_t physical_height,
168 static void wlOutputModeCB(void *data,
169 struct wl_output *wl_output,
175 static void wlIviAppErrorCB(void *data,
176 struct ivi_application *ivi_application,
178 const char *error_text);
180 static void wlIviAppNativeShellInfoCB(void *data,
181 struct ivi_application *ivi_application,
184 static void wlIviCtrlScreenCB(void *data,
185 struct ivi_controller *ivi_controller,
187 struct ivi_controller_screen *screen);
189 static void wlIviCtrlLayerCB(void *data,
190 struct ivi_controller *ivi_controller,
193 static void wlIviCtrlSurfaceCB(void *data,
194 struct ivi_controller *ivi_controller,
195 uint32_t id_surface);
197 static void wlIviCtrlErrorCB(void *data,
198 struct ivi_controller *ivi_controller,
202 const char *error_text);
204 static void wlIviCtrlNativeHandleCB(void *data,
205 struct ivi_controller *ivi_controller,
206 struct wl_surface *surface);
209 // ico_window_mgr listener
210 struct ico_window_mgr_listener m_listener;
212 // wayland output listener
213 struct wl_output_listener m_wlOutputListener;
215 // genivi ivi-application listener
216 struct ivi_application_listener m_ivi_app_listener;
218 // genivi ivi-controller listener
219 struct ivi_controller_listener m_ivi_ctrl_listener;
221 // Wayland's Window Manager PlugIn instance
222 static struct ico_window_mgr *m_winmgr;
224 // Wayland's genivi ivi_application instance
225 static struct ivi_application *m_ivi_app;
227 // Wayland's genivi ivi_controller instance
228 static struct ivi_controller *m_ivi_ctrl;
230 // wayland output instance
231 static struct wl_output *m_wloutput;
233 // surface id for wayland/weston applications
234 static int m_id_surface;
236 // creation surface title name
237 static struct creation_surface_wait *m_wait_surface_creation;
238 static struct creation_surface_wait *m_free_surface_creation;
240 #endif // __CICO_SC_WL_WINMGR_IF_H__
241 // vim:set expandtab ts=4 sw=4: