]> Pileus Git - ~andy/gtk/blobdiff - gdk/x11/gdkdisplay-x11.c
x11: Get rid of XSettingsClient object
[~andy/gtk] / gdk / x11 / gdkdisplay-x11.c
index 466f7e56bfdfa5424161f99eacad3d959dff8be1..dd0a2de4e771b871856d69dbd1b291784ab2452f 100644 (file)
@@ -26,6 +26,7 @@
 #include "gdkdisplay.h"
 #include "gdkeventsource.h"
 #include "gdkeventtranslator.h"
+#include "gdkframeclockprivate.h"
 #include "gdkinternals.h"
 #include "gdkscreen.h"
 #include "gdkinternals.h"
@@ -685,7 +686,7 @@ gdk_x11_display_translate_event (GdkEventTranslator *translator,
               window_impl->toplevel->frame_pending)
             {
               window_impl->toplevel->frame_pending = FALSE;
-              gdk_frame_clock_thaw (gdk_window_get_frame_clock (event->any.window));
+              _gdk_frame_clock_thaw (gdk_window_get_frame_clock (event->any.window));
             }
 
          if (toplevel)
@@ -1061,16 +1062,15 @@ static GdkFrameTimings *
 find_frame_timings (GdkFrameClock *clock,
                     guint64        serial)
 {
-  GdkFrameHistory *history = gdk_frame_clock_get_history (clock);
   gint64 start_frame, end_frame, i;
 
-  start_frame = gdk_frame_history_get_start (history);
-  end_frame = gdk_frame_history_get_frame_counter (history);
+  start_frame = gdk_frame_clock_get_history_start (clock);
+  end_frame = gdk_frame_clock_get_frame_counter (clock);
   for (i = end_frame; i >= start_frame; i--)
     {
-      GdkFrameTimings *timings = gdk_frame_history_get_timings (history, i);
+      GdkFrameTimings *timings = gdk_frame_clock_get_timings (clock, i);
 
-      if (gdk_frame_timings_get_cookie (timings) == serial)
+      if (timings->cookie == serial)
         return timings;
     }
 
@@ -1087,7 +1087,7 @@ _gdk_wm_protocols_filter (GdkXEvent *xev,
   GdkDisplay *display;
   Atom atom;
 
-  if (!GDK_IS_X11_WINDOW (win))
+  if (!GDK_IS_X11_WINDOW (win) || GDK_WINDOW_DESTROYED (win))
     return GDK_FILTER_CONTINUE;
 
   if (xevent->type != ClientMessage)
@@ -1100,7 +1100,7 @@ _gdk_wm_protocols_filter (GdkXEvent *xev,
   if (xevent->xclient.message_type == gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_FRAME_DRAWN"))
     {
       GdkWindowImplX11 *window_impl;
-      window_impl = GDK_WINDOW_IMPL_X11 (event->any.window->impl);
+      window_impl = GDK_WINDOW_IMPL_X11 (win->impl);
       if (window_impl->toplevel)
         {
           guint32 d0 = xevent->xclient.data.l[0];
@@ -1112,16 +1112,16 @@ _gdk_wm_protocols_filter (GdkXEvent *xev,
           gint64 frame_drawn_time = ((guint64)d3 << 32) | d2;
           gint64 refresh_interval, presentation_time;
 
-          GdkFrameClock *clock = gdk_window_get_frame_clock (event->any.window);
+          GdkFrameClock *clock = gdk_window_get_frame_clock (win);
           GdkFrameTimings *timings = find_frame_timings (clock, serial);
 
           if (timings)
-            gdk_frame_timings_set_drawn_time (timings, frame_drawn_time);
+            timings->drawn_time = frame_drawn_time;
 
           if (window_impl->toplevel->frame_pending)
             {
               window_impl->toplevel->frame_pending = FALSE;
-              gdk_frame_clock_thaw (clock);
+              _gdk_frame_clock_thaw (clock);
             }
 
           gdk_frame_clock_get_refresh_info (clock,
@@ -1138,7 +1138,7 @@ _gdk_wm_protocols_filter (GdkXEvent *xev,
   if (xevent->xclient.message_type == gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_FRAME_TIMINGS"))
     {
       GdkWindowImplX11 *window_impl;
-      window_impl = GDK_WINDOW_IMPL_X11 (event->any.window->impl);
+      window_impl = GDK_WINDOW_IMPL_X11 (win->impl);
       if (window_impl->toplevel)
         {
           guint32 d0 = xevent->xclient.data.l[0];
@@ -1148,27 +1148,24 @@ _gdk_wm_protocols_filter (GdkXEvent *xev,
 
           guint64 serial = ((guint64)d1 << 32) | d0;
 
-          GdkFrameClock *clock = gdk_window_get_frame_clock (event->any.window);
+          GdkFrameClock *clock = gdk_window_get_frame_clock (win);
           GdkFrameTimings *timings = find_frame_timings (clock, serial);
 
           if (timings)
             {
-              gint64 drawn_time = gdk_frame_timings_get_drawn_time (timings);
               gint32 presentation_time_offset = (gint32)d2;
               gint32 refresh_interval = d3;
 
-              if (drawn_time && presentation_time_offset)
-                gdk_frame_timings_set_presentation_time (timings,
-                                                         drawn_time + presentation_time_offset);
+              if (timings->drawn_time && presentation_time_offset)
+                timings->presentation_time = timings->drawn_time + presentation_time_offset;
 
               if (refresh_interval)
-                gdk_frame_timings_set_refresh_interval (timings, refresh_interval);
+                timings->refresh_interval = refresh_interval;
 
-              gdk_frame_timings_set_complete (timings, TRUE);
+              timings->complete = TRUE;
 #ifdef G_ENABLE_DEBUG
               if ((_gdk_debug_flags & GDK_DEBUG_FRAMES) != 0)
-                _gdk_frame_history_debug_print (gdk_frame_clock_get_history (clock),
-                                                timings);
+                _gdk_frame_clock_debug_print_timings (clock, timings);
 #endif /* G_ENABLE_DEBUG */
             }
         }
@@ -1201,7 +1198,7 @@ _gdk_wm_protocols_filter (GdkXEvent *xev,
     }
   else if (atom == gdk_x11_get_xatom_by_name_for_display (display, "WM_TAKE_FOCUS"))
     {
-      GdkToplevelX11 *toplevel = _gdk_x11_window_get_toplevel (event->any.window);
+      GdkToplevelX11 *toplevel = _gdk_x11_window_get_toplevel (win);
 
       /* There is no way of knowing reliably whether we are viewable;
        * so trap errors asynchronously around the XSetInputFocus call
@@ -1235,7 +1232,7 @@ _gdk_wm_protocols_filter (GdkXEvent *xev,
   else if (atom == gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_SYNC_REQUEST") &&
           GDK_X11_DISPLAY (display)->use_sync)
     {
-      GdkToplevelX11 *toplevel = _gdk_x11_window_get_toplevel (event->any.window);
+      GdkToplevelX11 *toplevel = _gdk_x11_window_get_toplevel (win);
       if (toplevel)
        {
 #ifdef HAVE_XSYNC
@@ -1397,7 +1394,7 @@ _gdk_x11_display_open (const gchar *display_name)
    * structures in places
    */
   for (i = 0; i < ScreenCount (display_x11->xdisplay); i++)
-    _gdk_x11_screen_init_events (display_x11->screens[i]);
+    _gdk_x11_xsettings_init (GDK_X11_SCREEN (display_x11->screens[i]));
 
   /*set the default screen */
   display_x11->default_screen = display_x11->screens[DefaultScreen (display_x11->xdisplay)];