Fix XDG application shrinks 95/15595/5
authorKazumasa Mitsunari <knimitz@witz-inc.co.jp>
Mon, 23 Jul 2018 11:19:47 +0000 (20:19 +0900)
committerKazumasa Mitsunari <knimitz@witz-inc.co.jp>
Tue, 24 Jul 2018 07:56:19 +0000 (07:56 +0000)
WM set surface source size output_size(1080X1920) in case of using runXDG.
Then, XDG surface shrinks because dest size(1080X1488) is set and
the surface is scaled.

On the other hand, XDG application's source size is w = 0, h = 0
on startup from ivi-wm, so WM has to set source size in somewhere.
So this patch fixes WM set XDG surface source size.

This is short term solution because WM set source rectangle size
every state changes.

Bug-AGL: SPEC-1584

Change-Id: I128db0b7feaba6b51e13c467e91d5aff6adaf0a7
Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
src/wayland_ivi_wm.cpp
src/window_manager.cpp

index 75ecbbd..e0c395c 100644 (file)
@@ -621,19 +621,12 @@ void controller::surface_created(uint32_t id)
         this->surfaces[id] = std::make_unique<struct surface>(id, this);
         this->chooks->surface_created(id);
 
-        // TODO: If Clipping is necessary, this process should be modified.
-        {
-            // Set surface type:IVI_WM_SURFACE_TYPE_DESKTOP)
-            // for resizing wayland surface when switching from split to full surface.
-            ivi_wm_set_surface_type(this->proxy.get(), id, IVI_WM_SURFACE_TYPE_DESKTOP);
-
-            // Set source reactangle even if we should not need to set it
-            // for enable setting for destination region.
-            this->surfaces[id]->set_source_rectangle(0, 0, this->output_size.w, this->output_size.h);
+        // Set surface type:IVI_WM_SURFACE_TYPE_DESKTOP)
+        // for resizing wayland surface when switching from split to full surface.
+        ivi_wm_set_surface_type(this->proxy.get(), id, IVI_WM_SURFACE_TYPE_DESKTOP);
 
-            // Flush display
-            this->display->flush();
-        }
+        // Flush display
+        this->display->flush();
     }
 }
 
index 5b86af8..15f55f0 100644 (file)
@@ -738,6 +738,8 @@ void WindowManager::surface_set_layout(int surface_id, const std::string& area)
               layer_id);
 
     // set destination to the display rectangle
+    s->set_source_rectangle(0, 0, w, h);
+    this->layout_commit();
     s->set_destination_rectangle(x, y, w, h);
 
     // update area information