ecore_wl2_window: modify configure_send function 28/280828/4
authorDoyoun Kang <doyoun.kang@samsung.com>
Mon, 5 Sep 2022 10:52:05 +0000 (19:52 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Wed, 7 Sep 2022 06:22:14 +0000 (15:22 +0900)
If the def_config's serial and req_config's serial are same, this means that the
ECORE_WL2_EVENT_WINDOW_CONFIGURE event was not generated by configure_event from display server.

In this case, ECORE_WL2_EVENT_WINDOW_CONFIGURE event just handles the state of window and
doesn't handle the size. So, the width and the height of the event are set to zero.

@tizen_only

Change-Id: Ic366a95cb15dc4e9fc57df6d053849cd0f3fff6c

src/lib/ecore_wl2/ecore_wl2_window.c

index 9746724..33e0194 100644 (file)
@@ -148,6 +148,7 @@ static void
 _ecore_wl2_window_configure_send(Ecore_Wl2_Window *win)
 {
    Ecore_Wl2_Event_Window_Configure *ev;
+   int size_type = 0;
 
    ev = calloc(1, sizeof(Ecore_Wl2_Event_Window_Configure));
    if (!ev) return;
@@ -160,35 +161,48 @@ _ecore_wl2_window_configure_send(Ecore_Wl2_Window *win)
    ev->y = win->set_config.geometry.y;
 //
 
-// TIZEN_ONLY(220421): modify event size
-   if (win->def_config.fullscreen || win->def_config.maximized)
+// TIZEN_ONLY(220421/220905): modify event size
+   if (win->def_config.serial == win->req_config.serial)
      {
-        ev->w = win->def_config.geometry.w;
-        ev->h = win->def_config.geometry.h;
+        // this means that this function is called by internal function not display server's configure
+        ev->w = 0;
+        ev->h = 0;
+        size_type = 1;
      }
    else
      {
-        if ((win->def_config.fullscreen != win->req_config.fullscreen) ||
-            (win->def_config.maximized != win->req_config.maximized))
+        if (win->def_config.fullscreen || win->def_config.maximized)
           {
-             // this means that window unset fullscreen or maximized.
-             // use saved geometry
-             ev->w = win->saved.w;
-             ev->h = win->saved.h;
+             ev->w = win->def_config.geometry.w;
+             ev->h = win->def_config.geometry.h;
+             size_type = 2;
           }
         else
           {
-             if (win->def_config.geometry.w || win->def_config.geometry.h)
+             if ((win->def_config.fullscreen != win->req_config.fullscreen) ||
+                 (win->def_config.maximized != win->req_config.maximized))
                {
-                  ev->w = win->def_config.geometry.w;
-                  ev->h = win->def_config.geometry.h;
+                  // this means that window unset fullscreen or maximized.
+                  // use saved geometry
+                  ev->w = win->saved.w;
+                  ev->h = win->saved.h;
+                  size_type = 3;
                }
              else
                {
-                  // this means that display server didn't consider client's size.
-                  // use client set_config size
-                  ev->w = win->set_config.geometry.w;
-                  ev->h = win->set_config.geometry.h;
+                  if (win->def_config.geometry.w || win->def_config.geometry.h)
+                    {
+                       ev->w = win->def_config.geometry.w;
+                       ev->h = win->def_config.geometry.h;
+                       size_type = 4;
+                    }
+                  else
+                    {
+                       // this means that display server didn't consider client's size.
+                       ev->w = 0;
+                       ev->h = 0;
+                       size_type = 5;
+                    }
                }
           }
      }
@@ -215,6 +229,7 @@ _ecore_wl2_window_configure_send(Ecore_Wl2_Window *win)
 
    win->req_config = win->def_config;
 
+   ERR("[WINDOW] Generate WINDOW_CONFIGURE event.. win:%d, states:%d, geo(%d,%d,%dx%d), type:%d", win->resource_id, ev->states, ev->x, ev->y, ev->w, ev->h, size_type);
    ecore_event_add(ECORE_WL2_EVENT_WINDOW_CONFIGURE, ev, NULL, NULL);
 
    if (win->def_config.focused)