summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChris Michael <cp.michael@samsung.com>2017-03-01 11:30:15 -0500
committerChris Michael <cp.michael@samsung.com>2017-03-01 11:30:15 -0500
commitdfb18775002c5130b60bdc03ed60b7de356e6012 (patch)
tree6e8f13caeff94e36c7a0fc01f7d8019b17e4597c /src
parentb09dcc1e0e7af958c49b5a7e1b0845ea888f2781 (diff)
ecore-evas-wayland: Fix issue of apps not starting up in fullscreen mode
Calls to make a window fullscreen do require the window to already have a shell surface with which to fullscreen. If an app sets the window fullscreen property when the window is not shown yet, then the app would never startup fullscreen. This patch fixes that issue by adding a 'defer_fullscreen' flag to Ecore_Evas (wayland) so that when the window does finally get shown, we can show it in fullscreen. Addresses part of the T5044 ticket... ref T5044 @fix Signed-off-by: Chris Michael <cp.michael@samsung.com>
Diffstat (limited to 'src')
-rw-r--r--src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c21
-rw-r--r--src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h1
2 files changed, 22 insertions, 0 deletions
diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
index c68978f95b..e336c46305 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
@@ -1400,6 +1400,14 @@ _ecore_evas_wl_common_fullscreen_set(Ecore_Evas *ee, Eina_Bool on)
1400 if (ee->prop.fullscreen == on) return; 1400 if (ee->prop.fullscreen == on) return;
1401 1401
1402 wdata = ee->engine.data; 1402 wdata = ee->engine.data;
1403
1404 ee->prop.fullscreen = on;
1405 if ((!wdata->sync_done) || (!ee->visible))
1406 {
1407 wdata->defer_fullscreen = EINA_TRUE;
1408 return;
1409 }
1410
1403 ecore_wl2_window_fullscreen_set(wdata->win, on); 1411 ecore_wl2_window_fullscreen_set(wdata->win, on);
1404} 1412}
1405 1413
@@ -1781,6 +1789,13 @@ _ecore_evas_wl_common_show(Ecore_Evas *ee)
1781 1789
1782 ecore_wl2_window_show(wdata->win); 1790 ecore_wl2_window_show(wdata->win);
1783 ecore_wl2_window_alpha_set(wdata->win, ee->alpha); 1791 ecore_wl2_window_alpha_set(wdata->win, ee->alpha);
1792 ecore_wl2_window_transparent_set(wdata->win, ee->transparent);
1793
1794 if (wdata->defer_fullscreen)
1795 {
1796 wdata->defer_fullscreen = EINA_FALSE;
1797 ecore_wl2_window_fullscreen_set(wdata->win, ee->prop.fullscreen);
1798 }
1784 1799
1785 einfo = (Evas_Engine_Info_Wayland *)evas_engine_info_get(ee->evas); 1800 einfo = (Evas_Engine_Info_Wayland *)evas_engine_info_get(ee->evas);
1786 if (einfo) 1801 if (einfo)
@@ -2015,6 +2030,12 @@ _ee_cb_sync_done(void *data, int type EINA_UNUSED, void *event EINA_UNUSED)
2015 ecore_wl2_window_alpha_set(wdata->win, ee->alpha); 2030 ecore_wl2_window_alpha_set(wdata->win, ee->alpha);
2016 ecore_wl2_window_transparent_set(wdata->win, ee->transparent); 2031 ecore_wl2_window_transparent_set(wdata->win, ee->transparent);
2017 2032
2033 if (wdata->defer_fullscreen)
2034 {
2035 wdata->defer_fullscreen = EINA_FALSE;
2036 ecore_wl2_window_fullscreen_set(wdata->win, ee->prop.fullscreen);
2037 }
2038
2018 evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh); 2039 evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh);
2019 2040
2020 if (wdata->win) 2041 if (wdata->win)
diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h
index 075bd6d7f3..b2a5781827 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h
@@ -51,6 +51,7 @@ struct _Ecore_Evas_Engine_Wl_Data
51 Eina_Bool sync_done : 1; 51 Eina_Bool sync_done : 1;
52 Eina_Bool defer_show : 1; 52 Eina_Bool defer_show : 1;
53 Eina_Bool reset_pending : 1; 53 Eina_Bool reset_pending : 1;
54 Eina_Bool defer_fullscreen : 1;
54}; 55};
55 56
56Ecore_Evas_Interface_Wayland *_ecore_evas_wl_interface_new(void); 57Ecore_Evas_Interface_Wayland *_ecore_evas_wl_interface_new(void);