[mutter/wayland] window: Replace meta_window_type_changed with meta_window_set_type



commit a9d8107c3d60f57efe57b293f5197eb8397a3cf0
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Thu Mar 13 16:52:31 2014 -0400

    window: Replace meta_window_type_changed with meta_window_set_type
    
    Which does the equality checking for us.

 src/core/window-private.h          |    3 +-
 src/core/window-x11.c              |   50 ++++++++++++++++-------------------
 src/core/window.c                  |   13 ++++++++-
 src/wayland/meta-wayland-surface.c |    3 +-
 4 files changed, 38 insertions(+), 31 deletions(-)
---
diff --git a/src/core/window-private.h b/src/core/window-private.h
index 7906bfc..aa5525e 100644
--- a/src/core/window-private.h
+++ b/src/core/window-private.h
@@ -684,7 +684,8 @@ void meta_window_update_layer (MetaWindow *window);
 
 void meta_window_recalc_features    (MetaWindow *window);
 
-void meta_window_type_changed       (MetaWindow *window);
+void meta_window_set_type (MetaWindow     *window,
+                           MetaWindowType  type);
 
 void meta_window_frame_size_changed (MetaWindow *window);
 
diff --git a/src/core/window-x11.c b/src/core/window-x11.c
index 47cd853..a27a16a 100644
--- a/src/core/window-x11.c
+++ b/src/core/window-x11.c
@@ -1510,43 +1510,41 @@ error:
 void
 meta_window_x11_recalc_window_type (MetaWindow *window)
 {
-  MetaWindowType old_type;
-
-  old_type = window->type;
+  MetaWindowType type;
 
   if (window->type_atom != None)
     {
       if (window->type_atom  == window->display->atom__NET_WM_WINDOW_TYPE_DESKTOP)
-        window->type = META_WINDOW_DESKTOP;
+        type = META_WINDOW_DESKTOP;
       else if (window->type_atom  == window->display->atom__NET_WM_WINDOW_TYPE_DOCK)
-        window->type = META_WINDOW_DOCK;
+        type = META_WINDOW_DOCK;
       else if (window->type_atom  == window->display->atom__NET_WM_WINDOW_TYPE_TOOLBAR)
-        window->type = META_WINDOW_TOOLBAR;
+        type = META_WINDOW_TOOLBAR;
       else if (window->type_atom  == window->display->atom__NET_WM_WINDOW_TYPE_MENU)
-        window->type = META_WINDOW_MENU;
+        type = META_WINDOW_MENU;
       else if (window->type_atom  == window->display->atom__NET_WM_WINDOW_TYPE_UTILITY)
-        window->type = META_WINDOW_UTILITY;
+        type = META_WINDOW_UTILITY;
       else if (window->type_atom  == window->display->atom__NET_WM_WINDOW_TYPE_SPLASH)
-        window->type = META_WINDOW_SPLASHSCREEN;
+        type = META_WINDOW_SPLASHSCREEN;
       else if (window->type_atom  == window->display->atom__NET_WM_WINDOW_TYPE_DIALOG)
-        window->type = META_WINDOW_DIALOG;
+        type = META_WINDOW_DIALOG;
       else if (window->type_atom  == window->display->atom__NET_WM_WINDOW_TYPE_NORMAL)
-        window->type = META_WINDOW_NORMAL;
+        type = META_WINDOW_NORMAL;
       /* The below are *typically* override-redirect windows, but the spec does
        * not disallow using them for managed windows.
        */
       else if (window->type_atom  == window->display->atom__NET_WM_WINDOW_TYPE_DROPDOWN_MENU)
-        window->type = META_WINDOW_DROPDOWN_MENU;
+        type = META_WINDOW_DROPDOWN_MENU;
       else if (window->type_atom  == window->display->atom__NET_WM_WINDOW_TYPE_POPUP_MENU)
-        window->type = META_WINDOW_POPUP_MENU;
+        type = META_WINDOW_POPUP_MENU;
       else if (window->type_atom  == window->display->atom__NET_WM_WINDOW_TYPE_TOOLTIP)
-        window->type = META_WINDOW_TOOLTIP;
+        type = META_WINDOW_TOOLTIP;
       else if (window->type_atom  == window->display->atom__NET_WM_WINDOW_TYPE_NOTIFICATION)
-        window->type = META_WINDOW_NOTIFICATION;
+        type = META_WINDOW_NOTIFICATION;
       else if (window->type_atom  == window->display->atom__NET_WM_WINDOW_TYPE_COMBO)
-        window->type = META_WINDOW_COMBO;
+        type = META_WINDOW_COMBO;
       else if (window->type_atom  == window->display->atom__NET_WM_WINDOW_TYPE_DND)
-        window->type = META_WINDOW_DND;
+        type = META_WINDOW_DND;
       else
         {
           char *atom_name;
@@ -1554,7 +1552,7 @@ meta_window_x11_recalc_window_type (MetaWindow *window)
           /*
            * Fallback on a normal type, and print warning. Don't abort.
            */
-          window->type = META_WINDOW_NORMAL;
+          type = META_WINDOW_NORMAL;
 
           meta_error_trap_push (window->display);
           atom_name = XGetAtomName (window->display->xdisplay,
@@ -1571,16 +1569,16 @@ meta_window_x11_recalc_window_type (MetaWindow *window)
     }
   else if (window->transient_for != NULL)
     {
-      window->type = META_WINDOW_DIALOG;
+      type = META_WINDOW_DIALOG;
     }
   else
     {
-      window->type = META_WINDOW_NORMAL;
+      type = META_WINDOW_NORMAL;
     }
 
-  if (window->type == META_WINDOW_DIALOG &&
+  if (type == META_WINDOW_DIALOG &&
       window->wm_state_modal)
-    window->type = META_WINDOW_MODAL_DIALOG;
+    type = META_WINDOW_MODAL_DIALOG;
 
   /* We don't want to allow override-redirect windows to have decorated-window
    * types since that's just confusing.
@@ -1595,7 +1593,7 @@ meta_window_x11_recalc_window_type (MetaWindow *window)
         case META_WINDOW_MODAL_DIALOG:
         case META_WINDOW_MENU:
         case META_WINDOW_UTILITY:
-          window->type = META_WINDOW_OVERRIDE_OTHER;
+          type = META_WINDOW_OVERRIDE_OTHER;
           break;
         /* Undecorated types, normally not override-redirect */
         case META_WINDOW_DESKTOP:
@@ -1616,8 +1614,6 @@ meta_window_x11_recalc_window_type (MetaWindow *window)
     }
 
   meta_verbose ("Calculated type %u for %s, old type %u\n",
-                window->type, window->desc, old_type);
-
-  if (old_type != window->type)
-    meta_window_type_changed (window);
+                type, window->desc, type);
+  meta_window_set_type (window, type);
 }
diff --git a/src/core/window.c b/src/core/window.c
index f281b57..a0335aa 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -7064,7 +7064,7 @@ meta_window_update_struts (MetaWindow *window)
     }
 }
 
-void
+static void
 meta_window_type_changed (MetaWindow *window)
 {
   gboolean old_decorated = window->decorated;
@@ -7098,6 +7098,17 @@ meta_window_type_changed (MetaWindow *window)
 }
 
 void
+meta_window_set_type (MetaWindow     *window,
+                      MetaWindowType  type)
+{
+  if (window->type == type)
+    return;
+
+  window->type = type;
+  meta_window_type_changed (window);
+}
+
+void
 meta_window_frame_size_changed (MetaWindow *window)
 {
   if (window->frame)
diff --git a/src/wayland/meta-wayland-surface.c b/src/wayland/meta-wayland-surface.c
index 71017ca..86f3dd8 100644
--- a/src/wayland/meta-wayland-surface.c
+++ b/src/wayland/meta-wayland-surface.c
@@ -991,8 +991,7 @@ xdg_shell_get_xdg_popup (struct wl_client *client,
   surface->window->placed = TRUE;
   meta_window_set_transient_for (surface->window, parent_surf->window);
 
-  surface->window->type = META_WINDOW_DROPDOWN_MENU;
-  meta_window_type_changed (surface->window);
+  meta_window_set_type (surface->window, META_WINDOW_DROPDOWN_MENU);
 
   meta_wayland_pointer_start_popup_grab (&seat->pointer, surface);
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]