Register window as screensaver 79/157679/7
authorPaweł Stawicki <p.stawicki@partner.samsung.com>
Wed, 25 Oct 2017 16:52:24 +0000 (18:52 +0200)
committerLukasz Oleksak <l.oleksak@samsung.com>
Thu, 2 Aug 2018 11:17:14 +0000 (11:17 +0000)
registering as screensaver moves window to a layer above quickpanel

Change-Id: I2b74f828d5cf56e2f9b1dbe1b1fc9811bc7d348d

CMakeLists.txt
packaging/org.tizen.universal-switch.spec
src/Window.cpp

index 8fd50f8..87da618 100644 (file)
@@ -31,6 +31,7 @@ pkg_check_modules(pkgs REQUIRED
     cairo
     storage
     syspopup-caller
+    tzsh-screensaver-service
 )
 # TODO remove cairo dependency, when there will be available screenshot service.
 
index 2ffd6e5..f7b2cd1 100644 (file)
@@ -34,6 +34,7 @@ BuildRequires:  pkgconfig(cairo)
 BuildRequires:  pkgconfig(storage)
 BuildRequires:  pkgconfig(syspopup-caller)
 BuildRequires:  gtest-devel
+BuildRequires:  pkgconfig(tzsh-screensaver-service)
 #Required for tests
 BuildRequires:  net-config
 %if %{with docs}
index 84c7510..141abfa 100644 (file)
@@ -19,6 +19,8 @@
 
 #include <Ecore_Wl2.h>
 
+#include <tzsh_screensaver_service.h>
+
 Window::Window()
        : handler(nullptr, removeHandler)
 {
@@ -46,6 +48,24 @@ Window::Window()
 
        evas_object_show(windowHandler);
 
+       // move window to screensaver layer (above quickpanel),
+       // see: enlightenment/src/bin/services/e_service_scrsaver.c:17
+       // TODO: this is temporary solution and final decision will be made after
+       //       consultations with window manager team.
+       auto tz_win = elm_win_window_id_get(windowHandler);
+       if (tz_win) {
+               auto tzsh = tzsh_create(TZSH_TOOLKIT_TYPE_EFL);
+               if (!tzsh) {
+                       ERROR("Tzsh cannot be created");
+               } else {
+                       auto tz_scrsaver = tzsh_screensaver_service_create(tzsh, tz_win);
+                       tzsh_screensaver_service_destroy(tz_scrsaver);
+                       tzsh_destroy(tzsh);
+               }
+       } else {
+               ERROR("Failed to get window ID");
+       }
+
        Eina_Rectangle rect = {0, 0, 0, 0};
 
        ecore_wl2_window_input_rect_set(waylandWindow, &rect);