improvement: Surface created by GENIVI-LayerManagement is supported. 58/27558/2
authorRyota Okubi <ryota.okubi@mail.toyota-td.jp>
Tue, 16 Sep 2014 06:07:42 +0000 (15:07 +0900)
committerRyota Okubi <ryota.okubi@mail.toyota-td.jp>
Tue, 16 Sep 2014 07:40:21 +0000 (16:40 +0900)
Surface created by weston-ivi-shell of GENIVI-LayerManagement
is supported.

Change-Id: I4f5d3d2b9e79dff7284e1680c0033a2c2016fa6e
Signed-off-by: Ryota Okubi <ryota.okubi@mail.toyota-td.jp>
lib/system-controller/CicoSCWindowController.cpp
lib/system-controller/CicoSCWindowController.h
lib/system-controller/CicoSCWlWinMgrIF.cpp
lib/system-controller/CicoSCWlWinMgrIF.h

index d973906..b0d12e9 100644 (file)
@@ -1768,22 +1768,25 @@ CicoSCWindowController::outputModeCB(void             *data,
  *  @param [in] data        user data
  *  @param [in] ivi_controller  wayland ivi-controller plugin interface
  *  @param [in] id_surface      surface id
+ *  @param [in] pid             surface creator process id
+ *  @param [in] title           surface title
  */
 //--------------------------------------------------------------------------
 void
-CicoSCWindowController::createSurfaceCB(void *data,
+CicoSCWindowController::createSurfaceCB(void        *data,
                                         struct ivi_controller *ivi_controller,
-                                        uint32_t id_surface)
+                                        uint32_t    id_surface,
+                                        int32_t     pid,
+                                        const char  *title)
 {
-    int     pid;
     struct ilmSurfaceProperties SurfaceProperties;
 
     ICO_TRA("CicoSCWindowController::createSurfaceCB Enter"
-            "(surfaceid=%08x)", id_surface);
+            "(surfaceid=%08x,pid=%d)", id_surface, pid);
 
     if (ilm_getPropertiesOfSurface(id_surface, &SurfaceProperties) != ILM_SUCCESS)  {
-        ICO_ERR("CicoSCWindowController::createSurfaceCB: ilm_getPropertiesOfSurface(%x) Error",
-                id_surface);
+        ICO_ERR("CicoSCWindowController::createSurfaceCB: ilm_getPropertiesOfSurface(%x) "
+                "Error", id_surface);
         return;
     }
     ICO_TRA("createSurfaceCB: surface=%08x w/h=%d/%d->%d/%d",
@@ -1792,8 +1795,16 @@ CicoSCWindowController::createSurfaceCB(void *data,
 
     CicoSCWindow* window = new CicoSCWindow();
     window->surfaceid = id_surface;
-    window->name = CicoSCWlWinMgrIF::wlIviCtrlGetSurfaceWaiting(id_surface, &pid);
-    window->pid       = pid;
+    int32_t     svpid;
+    const char *svtitle = CicoSCWlWinMgrIF::wlIviCtrlGetSurfaceWaiting(id_surface, &svpid);
+    if (svtitle)    {
+        window->name = svtitle;
+        window->pid  = svpid;
+    }
+    else        {
+        window->name = title;
+        window->pid  = pid;
+    }
     window->displayid = 0;              // currently fixed 0
     window->raise = 1;                  // created surface is top of layer
     window->srcwidth = SurfaceProperties.sourceWidth;
@@ -1842,7 +1853,9 @@ CicoSCWindowController::createSurfaceCB(void *data,
         window->appid = aulitem->m_appid;
         ICO_DBG("appid=%s", window->appid.c_str());
         ailItem = appctrl->findAIL(window->appid.c_str());
+    }
 
+    if (NULL != ailItem) {
         window->layerid = ailItem->m_layer;
         window->zoneid  = ailItem->m_displayZone;
         window->nodeid  = ailItem->m_nodeID;
index e92f8b6..9b346a3 100644 (file)
@@ -185,9 +185,11 @@ public:
                               int32_t height,
                               int32_t refresh);
 
-    virtual void createSurfaceCB(void           *data,
+    virtual void createSurfaceCB(void       *data,
                                  struct ivi_controller *ivi_controller,
-                                 uint32_t id_surface);
+                                 uint32_t   id_surface,
+                                 int32_t    pid,
+                                 const char *title);
 
     const CicoSCWindow* findWindowObj(int32_t pid, uint32_t surfaceid) const;
 
index 63e7b8a..7951e91 100644 (file)
@@ -648,12 +648,16 @@ CicoSCWlWinMgrIF::outputModeCB(void             *data,
  *  @param [in] data            user data(unused)
  *  @param [in] ivi_controller  wayland ivi-controller plugin interface
  *  @param [in] id_surface      surface id
+ *  @param [in] pid             surface creator process id
+ *  @param [in] title           surface title
  */
 //--------------------------------------------------------------------------
 void
-CicoSCWlWinMgrIF::createSurfaceCB(void                  *data,
+CicoSCWlWinMgrIF::createSurfaceCB(void          *data,
                                   struct ivi_controller *ivi_controller,
-                                  uint32_t id_surface)
+                                  uint32_t      id_surface,
+                                  int32_t       pid,
+                                  const char    *title)
 {
     ICO_WRN("CicoSCWlWinMgrIF::createSurfaceCB called.");
 }
@@ -1002,13 +1006,15 @@ CicoSCWlWinMgrIF::wlIviCtrlLayerCB(void *data,
  *  @param [in] data            user data(unused)
  *  @param [in] ivi_controller  wayland ivi-controller interface
  *  @param [in] id_surface      surface id
+ *  @param [in] pid             surface creator process id
+ *  @param [in] title           surface title
  */
 //--------------------------------------------------------------------------
 void
-CicoSCWlWinMgrIF::wlIviCtrlSurfaceCB(void *data,
+CicoSCWlWinMgrIF::wlIviCtrlSurfaceCB(void       *data,
                                      struct ivi_controller *ivi_controller,
-                                     uint32_t id_surface,
-                                     int32_t pid,
+                                     uint32_t   id_surface,
+                                     int32_t    pid,
                                      const char *title)
 {
     ICO_TRA("CicoSCWlWinMgrIF::wlIviCtrlSurfaceCB: Enter(%x)", id_surface);
@@ -1018,7 +1024,8 @@ CicoSCWlWinMgrIF::wlIviCtrlSurfaceCB(void *data,
         return;
     }
 
-    static_cast<CicoSCWlWinMgrIF*>(data)->createSurfaceCB(data, ivi_controller, id_surface);
+    static_cast<CicoSCWlWinMgrIF*>(data)->
+            createSurfaceCB(data, ivi_controller, id_surface, pid, title);
 
     ICO_TRA("CicoSCWlWinMgrIF::wlIviCtrlSurfaceCB: Leave");
 }
index 2aa2a96..b8a7d2c 100644 (file)
@@ -107,7 +107,9 @@ public:
 
     virtual void createSurfaceCB(void           *data,
                                  struct ivi_controller *ivi_controller,
-                                 uint32_t id_surface);
+                                 uint32_t       id_surface,
+                                 int32_t        pid,
+                                 const char     *title);
 
     static void wlIviCtrlRemoveSurface(uint32_t id_surface);