[gtk+: 1/2] get directfb building with csw



commit e6605b091cf629c0aed502de145bcf43fd810f08
Author: Cody Russell <bratsche gnome org>
Date:   Thu Jul 9 23:53:26 2009 +0100

    get directfb building with csw

 gdk/directfb/gdkdisplay-directfb.c |   18 +-
 gdk/directfb/gdkgc-directfb.c      |   14 +-
 gdk/directfb/gdkinput-directfb.h   |    1 -
 gdk/directfb/gdkmain-directfb.c    |   81 +-----
 gdk/directfb/gdkpixmap-directfb.c  |   30 +-
 gdk/directfb/gdkwindow-directfb.c  |  537 ++++++------------------------------
 6 files changed, 119 insertions(+), 562 deletions(-)
---
diff --git a/gdk/directfb/gdkdisplay-directfb.c b/gdk/directfb/gdkdisplay-directfb.c
index 4feea27..1b8d245 100644
--- a/gdk/directfb/gdkdisplay-directfb.c
+++ b/gdk/directfb/gdkdisplay-directfb.c
@@ -377,16 +377,18 @@ gdk_directfb_pointer_ungrab (guint32  time,
   g_object_unref (old_grab_window);
 }
 
-gint
-gdk_display_pointer_is_grabbed (GdkDisplay *display)
-{
-  return _gdk_directfb_pointer_grab_window != NULL;
-}
-
 void
-gdk_display_pointer_ungrab (GdkDisplay *display,guint32 time)
+gdk_display_pointer_ungrab (GdkDisplay *display,
+                            guint32 time)
 {
-  gdk_directfb_pointer_ungrab (time, _gdk_directfb_pointer_implicit_grab);
+  GdkPointerGrabInfo *grab = _gdk_display_get_last_pointer_grab (display);
+
+  if (grab)
+    {
+      grab->serial_end = 0;
+    }
+
+  _gdk_display_pointer_grab_update (display, 0);
 }
 
 
diff --git a/gdk/directfb/gdkgc-directfb.c b/gdk/directfb/gdkgc-directfb.c
index e9cf2ec..ef83e85 100644
--- a/gdk/directfb/gdkgc-directfb.c
+++ b/gdk/directfb/gdkgc-directfb.c
@@ -351,7 +351,8 @@ gc_unset_clip_mask (GdkGC *gc)
 
 void
 _gdk_windowing_gc_set_clip_region (GdkGC           *gc,
-                                   const GdkRegion *region)
+                                   const GdkRegion *region,
+                                   gboolean         reset_origin)
 {
   GdkGCDirectFB *data;
 
@@ -367,10 +368,13 @@ _gdk_windowing_gc_set_clip_region (GdkGC           *gc,
   else
     temp_region_reset (&data->clip_region);
 
-  gc->clip_x_origin = 0;
-  gc->clip_y_origin = 0;
-  data->values.clip_x_origin = 0;
-  data->values.clip_y_origin = 0;
+  if (reset_origin)
+    {
+      gc->clip_x_origin = 0;
+      gc->clip_y_origin = 0;
+      data->values.clip_x_origin = 0;
+      data->values.clip_y_origin = 0;
+    }
 
   gc_unset_clip_mask (gc);
 }
diff --git a/gdk/directfb/gdkinput-directfb.h b/gdk/directfb/gdkinput-directfb.h
index 71f2a00..6fd2ae1 100644
--- a/gdk/directfb/gdkinput-directfb.h
+++ b/gdk/directfb/gdkinput-directfb.h
@@ -37,7 +37,6 @@ extern GdkModifierType _gdk_directfb_modifiers;
 extern int _gdk_directfb_mouse_x, _gdk_directfb_mouse_y;
 
 typedef struct _GdkAxisInfo      GdkAxisInfo;
-typedef struct _GdkInputWindow   GdkInputWindow;
 
 /* information about a device axis */
 struct _GdkAxisInfo
diff --git a/gdk/directfb/gdkmain-directfb.c b/gdk/directfb/gdkmain-directfb.c
index 51ccc01..0c03208 100644
--- a/gdk/directfb/gdkmain-directfb.c
+++ b/gdk/directfb/gdkmain-directfb.c
@@ -369,76 +369,15 @@ gdk_error_trap_pop (void)
   return 0;
 }
 
-
-/**
- * gdk_pointer_grab_info_libgtk_only:
- * @grab_window: location to store current grab window
- * @owner_events: location to store boolean indicating whether
- *   the @owner_events flag to gdk_pointer_grab() was %TRUE.
- *
- * Determines information about the current pointer grab.
- * This is not public API and must not be used by applications.
- *
- * Return value: %TRUE if this application currently has the
- *  pointer grabbed.
- **/
-gboolean
-gdk_pointer_grab_info_libgtk_only (GdkDisplay *display,GdkWindow **grab_window,
-				   gboolean    *owner_events)
-{
-  if (_gdk_directfb_pointer_grab_window)
-    {
-      if (grab_window)
-        *grab_window = (GdkWindow *)_gdk_directfb_pointer_grab_window;
-      if (owner_events)
-        *owner_events = _gdk_directfb_pointer_grab_owner_events;
-
-      return TRUE;
-    }
-
-  return FALSE;
-}
-
-/**
- * gdk_keyboard_grab_info_libgtk_only:
- * @grab_window: location to store current grab window
- * @owner_events: location to store boolean indicating whether
- *   the @owner_events flag to gdk_keyboard_grab() was %TRUE.
- *
- * Determines information about the current keyboard grab.
- * This is not public API and must not be used by applications.
- *
- * Return value: %TRUE if this application currently has the
- *  keyboard grabbed.
- **/
-gboolean
-gdk_keyboard_grab_info_libgtk_only (GdkDisplay *display,GdkWindow **grab_window,
-				    gboolean    *owner_events)
-{
-  if (_gdk_directfb_keyboard_grab_window)
-    {
-      if (grab_window)
-        *grab_window = (GdkWindow *) _gdk_directfb_keyboard_grab_window;
-      if (owner_events)
-        *owner_events = _gdk_directfb_keyboard_grab_owner_events;
-
-      return TRUE;
-    }
-
-  return FALSE;
-}
-
-
 GdkGrabStatus
 gdk_keyboard_grab (GdkWindow *window,
                    gint       owner_events,
                    guint32    time) 
 {
-	return gdk_directfb_keyboard_grab(gdk_display_get_default(),
-			window,
-			owner_events,
-			time);
-
+  return gdk_directfb_keyboard_grab (gdk_display_get_default(),
+                                     window,
+                                     owner_events,
+                                     time);
 }
 
 /*
@@ -485,17 +424,5 @@ gdk_display_pointer_grab (GdkDisplay *display,GdkWindow    *window,
                                     FALSE);
 }
 
-GdkGrabStatus
-gdk_pointer_grab (GdkWindow *     window,
-                  gint            owner_events,
-                  GdkEventMask    event_mask,
-                  GdkWindow *     confine_to,
-                  GdkCursor *     cursor,
-                  guint32         time)
-{
-	return gdk_directfb_pointer_grab(window, owner_events,event_mask,
-		confine_to,cursor,time,FALSE);	
-}
-
 #define __GDK_MAIN_X11_C__
 #include "gdkaliasdef.c"
diff --git a/gdk/directfb/gdkpixmap-directfb.c b/gdk/directfb/gdkpixmap-directfb.c
index 198b93c..b83755a 100644
--- a/gdk/directfb/gdkpixmap-directfb.c
+++ b/gdk/directfb/gdkpixmap-directfb.c
@@ -114,10 +114,10 @@ gdk_pixmap_impl_directfb_finalize (GObject *object)
 }
 
 GdkPixmap*
-gdk_pixmap_new (GdkDrawable *drawable,
-                gint       width,
-                gint       height,
-                gint       depth)
+_gdk_pixmap_new (GdkDrawable *drawable,
+                 gint       width,
+                 gint       height,
+                 gint       depth)
 {
   DFBSurfacePixelFormat    format;
   IDirectFBSurface        *surface;
@@ -196,10 +196,10 @@ gdk_pixmap_new (GdkDrawable *drawable,
 }
 
 GdkPixmap *
-gdk_bitmap_create_from_data (GdkDrawable   *drawable,
-                             const gchar *data,
-                             gint         width,
-                             gint         height)
+_gdk_bitmap_create_from_data (GdkDrawable   *drawable,
+                              const gchar *data,
+                              gint         width,
+                              gint         height)
 {
   GdkPixmap *pixmap;
 
@@ -249,13 +249,13 @@ gdk_bitmap_create_from_data (GdkDrawable   *drawable,
 }
 
 GdkPixmap*
-gdk_pixmap_create_from_data (GdkDrawable   *drawable,
-                             const gchar *data,
-                             gint         width,
-                             gint         height,
-                             gint         depth,
-                             const GdkColor    *fg,
-                             const GdkColor    *bg)
+_gdk_pixmap_create_from_data (GdkDrawable   *drawable,
+                              const gchar *data,
+                              gint         width,
+                              gint         height,
+                              gint         depth,
+                              const GdkColor    *fg,
+                              const GdkColor    *bg)
 {
   GdkPixmap *pixmap;
 
diff --git a/gdk/directfb/gdkwindow-directfb.c b/gdk/directfb/gdkwindow-directfb.c
index efd83d5..153dc18 100644
--- a/gdk/directfb/gdkwindow-directfb.c
+++ b/gdk/directfb/gdkwindow-directfb.c
@@ -51,10 +51,6 @@
 
 #include <directfb_util.h>
 
-
-
-
-
 D_DEBUG_DOMAIN( GDKDFB_Crossing,  "GDKDFB/Crossing",  "GDK DirectFB Crossing Events" );
 D_DEBUG_DOMAIN( GDKDFB_Updates,   "GDKDFB/Updates",   "GDK DirectFB Updates" );
 D_DEBUG_DOMAIN( GDKDFB_Paintable, "GDKDFB/Paintable", "GDK DirectFB Paintable" );
@@ -69,7 +65,9 @@ static void gdk_window_impl_directfb_class_init (GdkWindowImplDirectFBClass *kla
 static void gdk_window_impl_directfb_finalize   (GObject                    *object);
 
 static void gdk_window_impl_iface_init (GdkWindowImplIface *iface);
-
+static void gdk_directfb_window_destroy (GdkWindow *window,
+                                         gboolean   recursing,
+                                         gboolean   foreign_destroy);
 
 typedef struct
 {
@@ -79,115 +77,6 @@ typedef struct
 } GdkWindowChildHandlerData;
 
 
-/* Code for dirty-region queueing
- */
-static GSList *update_windows = NULL;
-static guint update_idle = 0;
-
-static void
-gdk_window_directfb_process_all_updates (void)
-{
-  GSList *tmp_list;
-  GSList *old_update_windows = update_windows;
-
-  if (update_idle)
-    g_source_remove (update_idle);
-
-  update_windows = NULL;
-  update_idle = 0;
-
-  D_DEBUG_AT( GDKDFB_Updates, "%s()\n", __FUNCTION__ );
-
-  g_slist_foreach (old_update_windows, (GFunc)g_object_ref, NULL);
-  tmp_list = old_update_windows;
-  while (tmp_list)
-    {
-      GdkWindowObject *private = GDK_WINDOW_OBJECT( tmp_list->data );
-#ifdef DIRECT_ENABLE_DEBUG
-      GdkWindowImplDirectFB *wimpl = GDK_WINDOW_IMPL_DIRECTFB (private->impl);
-#endif
-
-      if (private->update_freeze_count)
-        {
-          D_DEBUG_AT( GDKDFB_Updates, "  -> %p frozen [%4d,%4d-%4dx%4d] (%d boxes)\n",
-                      private, DFB_RECTANGLE_VALS_FROM_REGION( &wimpl->flips.bounding ),
-                      wimpl->flips.num_regions );
-          update_windows = g_slist_prepend (update_windows, private);
-        }
-      else
-        {
-          D_DEBUG_AT( GDKDFB_Updates, "  -> %p update [%4d,%4d-%4dx%4d] (%d boxes)\n",
-                      private, DFB_RECTANGLE_VALS_FROM_REGION( &wimpl->flips.bounding ),
-                      wimpl->flips.num_regions );
-          gdk_window_process_updates(tmp_list->data,TRUE);
-        }
-
-      g_object_unref (tmp_list->data);
-      tmp_list = tmp_list->next;
-    }
-
-#ifndef GDK_DIRECTFB_NO_EXPERIMENTS
-  g_slist_foreach (old_update_windows, (GFunc)g_object_ref, NULL);
-  tmp_list = old_update_windows;
-  while (tmp_list)
-    {
-      GdkWindowObject *top = GDK_WINDOW_OBJECT( gdk_window_get_toplevel( tmp_list->data ) );
-
-      if (top)
-        {
-          GdkWindowImplDirectFB *wimpl = GDK_WINDOW_IMPL_DIRECTFB (top->impl);
-
-          if (wimpl->flips.num_regions)
-            {
-              D_DEBUG_AT( GDKDFB_Updates, "  -> %p flip   [%4d,%4d-%4dx%4d] (%d boxes)\n",
-                          top, DFB_RECTANGLE_VALS_FROM_REGION( &wimpl->flips.bounding ),
-                          wimpl->flips.num_regions );
-
-              wimpl->drawable.surface->Flip( wimpl->drawable.surface, &wimpl->flips.bounding, DSFLIP_NONE );
-
-              dfb_updates_reset( &wimpl->flips );
-            }
-          else
-            D_DEBUG_AT( GDKDFB_Updates, "  -> %p has no flips!\n", top );
-        }
-      else
-        D_DEBUG_AT( GDKDFB_Updates, "  -> %p has no top level window!\n", tmp_list->data );
-
-      g_object_unref (tmp_list->data);
-      tmp_list = tmp_list->next;
-    }
-#endif
-
-  g_slist_free (old_update_windows);
-}
-
-static gboolean
-gdk_window_update_idle (gpointer data)
-{
-  gdk_window_directfb_process_all_updates ();
-
-  return FALSE;
-}
-
-static void
-gdk_window_schedule_update (GdkWindow *window)
-{
-  D_DEBUG_AT( GDKDFB_Updates, "%s( %p ) <- freeze count %d\n", __FUNCTION__, window,
-              window ? GDK_WINDOW_OBJECT (window)->update_freeze_count : -1 );
-
-  if (window && GDK_WINDOW_OBJECT (window)->update_freeze_count)
-    return;
-
-  if (!update_idle)
-    {
-      D_DEBUG_AT( GDKDFB_Updates, "  -> adding idle callback\n" );
-
-      update_idle = gdk_threads_add_idle_full (GDK_PRIORITY_REDRAW,
-                                               gdk_window_update_idle, NULL, NULL);
-    }
-}
-
-
 static GdkWindow *gdk_directfb_window_containing_pointer = NULL;
 static GdkWindow *gdk_directfb_focused_window            = NULL;
 static gpointer   parent_class                           = NULL;
@@ -671,6 +560,7 @@ _gdk_window_new (GdkWindow     *parent,
   return gdk_directfb_window_new (parent, attributes, attributes_mask,
                                   DWCAPS_NONE, DWOP_NONE, DSCAPS_NONE);
 }
+
 void
 _gdk_windowing_window_destroy_foreign (GdkWindow *window)
 {
@@ -678,14 +568,13 @@ _gdk_windowing_window_destroy_foreign (GdkWindow *window)
    * so reparent it to the root window, and then send
    * it a delete event, as if we were a WM
    */
-	_gdk_windowing_window_destroy (window,TRUE,TRUE);
+  gdk_directfb_window_destroy (window, TRUE, TRUE);
 }
 
-
-void
-_gdk_windowing_window_destroy (GdkWindow *window,
-                               gboolean   recursing,
-                               gboolean   foreign_destroy)
+static void
+gdk_directfb_window_destroy (GdkWindow *window,
+                             gboolean   recursing,
+                             gboolean   foreign_destroy)
 {
   GdkWindowObject       *private;
   GdkWindowImplDirectFB *impl;
@@ -709,7 +598,6 @@ _gdk_windowing_window_destroy (GdkWindow *window,
   if (window == gdk_directfb_focused_window)
     gdk_directfb_change_focus (NULL);
 
-
   if (impl->drawable.surface) {
     GdkDrawableImplDirectFB *dimpl = GDK_DRAWABLE_IMPL_DIRECTFB (private->impl);
     if(dimpl->cairo_surface) {
@@ -1612,95 +1500,6 @@ gdk_directfb_window_reparent (GdkWindow *window,
 }
 
 static void
-gdk_directfb_window_clear_area (GdkWindow *window,
-                                gint       x,
-                                gint       y,
-                                gint       width,
-                                gint       height,
-                                gboolean   send_expose)
-{
-  GdkWindowObject         *private;
-  GdkDrawableImplDirectFB *impl;
-  GdkPixmap               *bg_pixmap;
-  GdkWindowObject         *relative_to;
-  GdkGC                   *gc = NULL;
-  gint                     dx = 0;
-  gint                     dy = 0;
-
-  D_DEBUG_AT( GDKDFB_Window, "%s( %p, %4d,%4d-%4dx%4d )\n", __FUNCTION__, window, x, y, width, height );
-
-  g_return_if_fail (GDK_IS_WINDOW (window));
-
-  if (GDK_WINDOW_DESTROYED (window)) {
-    D_DEBUG_AT( GDKDFB_Window, "  -> DESTROYED!\n" );
-    return;
-  }
-
-  private = GDK_WINDOW_OBJECT (window);
-
-  impl = GDK_DRAWABLE_IMPL_DIRECTFB (private->impl);
-
-  /* Follow XClearArea definition for zero height width
-   */
-  if( width == 0 )
-		width = impl->width-x;
-  if( height == 0 )
-		height = impl->height-y;
-
-  bg_pixmap = private->bg_pixmap;
-
-  for (relative_to = private;
-       relative_to && bg_pixmap == GDK_PARENT_RELATIVE_BG;
-       relative_to = relative_to->parent)
-    {
-      bg_pixmap = relative_to->bg_pixmap;
-      dx += relative_to->x;
-      dy += relative_to->y;
-    }
-
-  if (bg_pixmap == GDK_NO_BG) {
-    D_DEBUG_AT( GDKDFB_Window, "  -> NO BG\n" );
-    return;
-  }
-
-  if (bg_pixmap && bg_pixmap != GDK_PARENT_RELATIVE_BG)
-    {
-      GdkGCValues  values;
-
-      values.fill = GDK_TILED;
-      values.tile = bg_pixmap;
-      values.ts_x_origin = - dx;
-      values.ts_y_origin = - dy;
-
-      D_DEBUG_AT( GDKDFB_Window, "  -> PIXMAP\n" );
-
-      gc = gdk_gc_new_with_values (GDK_DRAWABLE (impl), &values,
-                                   GDK_GC_FILL | GDK_GC_TILE |
-                                   GDK_GC_TS_X_ORIGIN | GDK_GC_TS_Y_ORIGIN);
-    }
-  else
-    {
-      /* GDK_PARENT_RELATIVE_BG, but no pixmap,
-         get the color from the parent window. */
-
-      GdkGCValues  values;
-
-      values.foreground = relative_to->bg_color;
-
-      D_DEBUG_AT( GDKDFB_Window, "  -> COLOR\n" );
-
-      gc = gdk_gc_new_with_values (GDK_DRAWABLE (impl), &values,
-                                   GDK_GC_FOREGROUND);
-    }
-
-  gdk_draw_rectangle (GDK_DRAWABLE (impl),
-                                gc, TRUE, x, y, width, height);
-
-  if (gc)
-    g_object_unref (gc);
-}
-
-static void
 gdk_window_directfb_raise (GdkWindow *window)
 {
   GdkWindowImplDirectFB *impl;
@@ -1889,20 +1688,16 @@ gdk_directfb_window_set_background (GdkWindow *window,
 
 static void
 gdk_directfb_window_set_back_pixmap (GdkWindow *window,
-                                     GdkPixmap *pixmap,
-                                     gboolean   parent_relative)
+                                     GdkPixmap *pixmap)
 {
   GdkWindowObject *private;
-  GdkPixmap       *old_pixmap;
 
   g_return_if_fail (GDK_IS_WINDOW (window));
-  g_return_if_fail (pixmap == NULL || !parent_relative);
 
-  D_DEBUG_AT( GDKDFB_Window, "%s( %p, %p, %srelative )\n", __FUNCTION__,
-              window, pixmap, parent_relative ? "" : "not " );
+  D_DEBUG_AT( GDKDFB_Window, "%s( %p, %p )\n", __FUNCTION__,
+              window, pixmap);
 
   private = GDK_WINDOW_OBJECT (window);
-  old_pixmap = private->bg_pixmap;
 
   if (private->bg_pixmap &&
       private->bg_pixmap != GDK_PARENT_RELATIVE_BG &&
@@ -1911,7 +1706,7 @@ gdk_directfb_window_set_back_pixmap (GdkWindow *window,
       g_object_unref (private->bg_pixmap);
     }
 
-  if (parent_relative)
+  if (pixmap == GDK_PARENT_RELATIVE_BG)
     {
       private->bg_pixmap = GDK_PARENT_RELATIVE_BG;
     }
@@ -2036,33 +1831,9 @@ _gdk_directfb_calc_abs (GdkWindow *window)
 }
 
 static gboolean
-gdk_directfb_window_get_origin (GdkWindow *window,
-                                gint      *x,
-                                gint      *y)
-{
-  g_return_val_if_fail (GDK_IS_WINDOW (window), FALSE);
-
-  if (!GDK_WINDOW_DESTROYED (window))
-    {
-      GdkDrawableImplDirectFB *impl;
-
-      impl = GDK_DRAWABLE_IMPL_DIRECTFB (GDK_WINDOW_OBJECT (window)->impl);
-
-      if (x)
-	*x = impl->abs_x;
-      if (y)
-	*y = impl->abs_y;
-
-      return TRUE;
-    }
-
-  return FALSE;
-}
-
-gboolean
-gdk_window_get_deskrelative_origin (GdkWindow *window,
-                                    gint      *x,
-                                    gint      *y)
+gdk_directfb_window_get_deskrelative_origin (GdkWindow *window,
+                                             gint      *x,
+                                             gint      *y)
 {
   return gdk_window_get_origin (window, x, y);
 }
@@ -2097,11 +1868,10 @@ gdk_window_get_root_origin (GdkWindow *window,
 }
 
 GdkWindow *
-_gdk_windowing_window_get_pointer (GdkDisplay      *display,
-                                   GdkWindow       *window,
-				   gint            *x,
-				   gint            *y,
-				   GdkModifierType *mask)
+gdk_directfb_window_get_pointer_helper (GdkWindow       *window,
+                                        gint            *x,
+                                        gint            *y,
+                                        GdkModifierType *mask)
 {
   GdkWindow               *retval = NULL;
   gint                     rx, ry, wx, wy;
@@ -2128,10 +1898,20 @@ _gdk_windowing_window_get_pointer (GdkDisplay      *display,
   return retval;
 }
 
+static gboolean
+gdk_directfb_window_get_pointer (GdkWindow       *window,
+                                 gint            *x,
+                                 gint            *y,
+                                 GdkModifierType *mask)
+{
+  return gdk_directfb_window_get_pointer_helper (window, x, y, mask) != NULL;
+}
+
 GdkWindow *
 _gdk_windowing_window_at_pointer (GdkDisplay *display,
                                   gint       *win_x,
-				  gint       *win_y)
+				  gint       *win_y,
+                                  GdkModifierType *mask)
 {
   GdkWindow *retval;
   gint       wx, wy;
@@ -2163,13 +1943,16 @@ _gdk_windowing_get_pointer (GdkDisplay       *display,
                             gint             *y,
                             GdkModifierType  *mask)
 {
-(void)screen;
-if(screen) {
-	*screen = gdk_display_get_default_screen  (display);
-}
-_gdk_windowing_window_get_pointer (display,
-				   _gdk_windowing_window_at_pointer(display,NULL,NULL),x,y,mask);
+  (void)screen;
+  if (screen) {
+    *screen = gdk_display_get_default_screen  (display);
+  }
 
+  gdk_directfb_window_get_pointer (_gdk_windowing_window_at_pointer (display,
+                                                                     NULL,
+                                                                     NULL,
+                                                                     NULL),
+                                   x, y, mask);
 }
 
 static GdkEventMask
@@ -2198,22 +1981,6 @@ gdk_directfb_window_set_events (GdkWindow    *window,
 }
 
 static void
-gdk_directfb_window_shape_combine_mask (GdkWindow *window,
-                                        GdkBitmap *mask,
-                                        gint       x,
-                                        gint       y)
-{
-}
-
-void
-gdk_window_input_shape_combine_mask (GdkWindow *window,
-                                     GdkBitmap *mask,
-                                     gint       x,
-                                     gint       y)
-{
-}
-
-static void
 gdk_directfb_window_shape_combine_region (GdkWindow       *window,
                                           const GdkRegion *shape_region,
                                           gint             offset_x,
@@ -2222,10 +1989,18 @@ gdk_directfb_window_shape_combine_region (GdkWindow       *window,
 }
 
 void
-gdk_window_input_shape_combine_region (GdkWindow       *window,
-                                       const GdkRegion *shape_region,
-                                       gint             offset_x,
-                                       gint             offset_y)
+gdk_directfb_window_input_shape_combine_region (GdkWindow       *window,
+                                                const GdkRegion *shape_region,
+                                                gint             offset_x,
+                                                gint             offset_y)
+{
+}
+
+static void
+gdk_directfb_window_queue_translation (GdkWindow *window,
+                                       GdkRegion *region,
+                                       gint       dx,
+                                       gint       dy)
 {
 }
 
@@ -2541,26 +2316,6 @@ gdk_window_set_functions (GdkWindow     *window,
   g_message("unimplemented %s", __FUNCTION__);
 }
 
-static void
-gdk_directfb_window_set_child_shapes (GdkWindow *window)
-{
-}
-
-static void
-gdk_directfb_window_merge_child_shapes (GdkWindow *window)
-{
-}
-
-void
-gdk_window_set_child_input_shapes (GdkWindow *window)
-{
-}
-
-void
-gdk_window_merge_child_input_shapes (GdkWindow *window)
-{
-}
-
 static gboolean
 gdk_directfb_window_set_static_gravities (GdkWindow *window,
                                           gboolean   use_static)
@@ -2903,158 +2658,14 @@ gdk_window_set_urgency_hint (GdkWindow *window,
 }
 
 static void
-gdk_window_impl_directfb_invalidate_maybe_recurse (GdkPaintable    *paintable,
-                                                   const GdkRegion *region,
-                                                   gboolean       (*child_func) (GdkWindow *, gpointer),
-                                                   gpointer         user_data)
-{
-  GdkWindow *window;
-  GdkWindowObject *private;
-  GdkWindowImplDirectFB *wimpl;
-  GdkDrawableImplDirectFB *impl;
-
-  wimpl = GDK_WINDOW_IMPL_DIRECTFB (paintable);
-  impl = (GdkDrawableImplDirectFB *)wimpl;
-  window = wimpl->gdkWindow;
-  private = (GdkWindowObject *)window;
-
-  GdkRegion visible_region;
-  GList *tmp_list;
-
-  g_return_if_fail (window != NULL);
-  g_return_if_fail (GDK_IS_WINDOW (window));
-
-  if (GDK_WINDOW_DESTROYED (window))
-    return;
-
-  if (private->input_only || !GDK_WINDOW_IS_MAPPED (window))
-    return;
-
-  temp_region_init_rectangle_vals( &visible_region, 0, 0, impl->width, impl->height );
-  gdk_region_intersect (&visible_region, region);
-
-  tmp_list = private->children;
-  while (tmp_list)
-    {
-      GdkWindowObject         *child = tmp_list->data;
-      GdkDrawableImplDirectFB *cimpl = (GdkDrawableImplDirectFB *) child->impl;
-
-      if (!child->input_only)
-        {
-          GdkRegion child_region;
-
-          temp_region_init_rectangle_vals( &child_region, child->x, child->y, cimpl->width, cimpl->height );
-
-          /* remove child area from the invalid area of the parent */
-          if (GDK_WINDOW_IS_MAPPED (child) && !child->shaped)
-            gdk_region_subtract (&visible_region, &child_region);
-
-          if (child_func && (*child_func) ((GdkWindow *)child, user_data))
-            {
-              gdk_region_intersect (&child_region, region);
-              gdk_region_offset (&child_region, - child->x, - child->y);
-
-              gdk_window_invalidate_maybe_recurse ((GdkWindow *)child,
-                                                   &child_region, child_func, user_data);
-            }
-
-          temp_region_deinit( &child_region );
-        }
-
-      tmp_list = tmp_list->next;
-    }
-
-  if (!gdk_region_empty (&visible_region))
-    {
-
-      if (private->update_area)
-        {
-          gdk_region_union (private->update_area, &visible_region);
-        }
-      else
-        {
-          update_windows = g_slist_prepend (update_windows, window);
-          private->update_area = gdk_region_copy (&visible_region);
-          gdk_window_schedule_update (window);
-        }
-    }
-
-  temp_region_deinit( &visible_region );
-}
-
-
-static void
-gdk_window_impl_directfb_process_updates (GdkPaintable *paintable,
-                                          gboolean      update_children)
-{
-  GdkWindowImplDirectFB *wimpl;
-  GdkDrawableImplDirectFB *impl;
-  GdkWindow               *window;
-  GdkWindowObject         *private;
-  GdkRegion               *update_area;
-
-  wimpl = GDK_WINDOW_IMPL_DIRECTFB (paintable);
-  impl = (GdkDrawableImplDirectFB *)wimpl;
-  window = wimpl->gdkWindow;
-  private = (GdkWindowObject *)window;
-
-  D_DEBUG_AT( GDKDFB_Paintable, "%s( %p, %schildren )\n", __FUNCTION__,
-              paintable, update_children ? "update " : "no " );
-
-  /* If an update got queued during update processing, we can get a
-   * window in the update queue that has an empty update_area.
-   * just ignore it.
-   */
-  if (!private->update_area)
-    return;
-
-  update_area = private->update_area;
-  private->update_area = NULL;
-
-  D_DEBUG_AT( GDKDFB_Paintable, "  -> update area %4d,%4d-%4dx%4d\n",
-              GDKDFB_RECTANGLE_VALS_FROM_BOX( &update_area->extents ) );
-
-  if (_gdk_event_func && gdk_window_is_viewable (window))
-    {
-      GdkRegion *expose_region = update_area;
-      GdkRegion  window_region;
-
-      temp_region_init_rectangle_vals( &window_region, 0, 0, impl->width, impl->height );
-      gdk_region_intersect( expose_region, &window_region );
-      temp_region_deinit (&window_region);
-
-      if (!gdk_region_empty (expose_region) && (private->event_mask & GDK_EXPOSURE_MASK))
-        {
-          GdkEvent event;
-
-          event.expose.type = GDK_EXPOSE;
-          event.expose.window = g_object_ref (window);
-          event.expose.send_event = FALSE;
-          event.expose.count = 0;
-          event.expose.region = expose_region;
-          gdk_region_get_clipbox (expose_region, &event.expose.area);
-          (*_gdk_event_func) (&event, _gdk_event_data);
-
-          g_object_unref (window);
-        }
-
-      if (expose_region != update_area)
-        gdk_region_destroy (expose_region);
-    }
-
-  gdk_region_destroy (update_area);
-}
-
-
-static void
 gdk_window_impl_directfb_begin_paint_region (GdkPaintable    *paintable,
+                                             GdkWindow       *window,
                                              const GdkRegion *region)
 {
   GdkDrawableImplDirectFB *impl;
   GdkWindowImplDirectFB   *wimpl;
   gint                     i;
 
-
   g_assert (region != NULL );
   wimpl = GDK_WINDOW_IMPL_DIRECTFB (paintable);
   impl = (GdkDrawableImplDirectFB *)wimpl;
@@ -3199,13 +2810,10 @@ gdk_window_impl_directfb_paintable_init (GdkPaintableIface *iface)
 {
   iface->begin_paint_region = gdk_window_impl_directfb_begin_paint_region;
   iface->end_paint = gdk_window_impl_directfb_end_paint;
-
-  iface->invalidate_maybe_recurse = gdk_window_impl_directfb_invalidate_maybe_recurse;
-  iface->process_updates = gdk_window_impl_directfb_process_updates;
 }
 
 void
-gdk_window_beep (GdkWindow *window)
+_gdk_windowing_window_beep (GdkWindow *window)
 {
   gdk_display_beep (gdk_display_get_default());
 }
@@ -3238,32 +2846,49 @@ _gdk_windowing_window_set_composited (GdkWindow *window,
 {
 }
 
+static gint
+gdk_directfb_window_get_root_coords (GdkWindow *window,
+                                     gint       x,
+                                     gint       y,
+                                     gint      *root_x,
+                                     gint      *root_y)
+{
+  /* TODO */
+  return 1;
+}
+
+static gboolean
+gdk_directfb_window_queue_antiexpose (GdkWindow *window,
+                                      GdkRegion *area)
+{
+  return FALSE;
+}
+
 static void
 gdk_window_impl_iface_init (GdkWindowImplIface *iface)
 {
   iface->show = gdk_directfb_window_show;
   iface->hide = gdk_directfb_window_hide;
   iface->withdraw = gdk_directfb_window_withdraw;
+  iface->set_events = gdk_directfb_window_set_events;
+  iface->get_events = gdk_directfb_window_get_events;
   iface->raise = gdk_window_directfb_raise;
   iface->lower = gdk_window_directfb_lower;
   iface->move_resize = gdk_directfb_window_move_resize;
-  iface->move_region = _gdk_directfb_window_move_region;
-  iface->scroll = _gdk_directfb_window_scroll;
-  iface->clear_area = gdk_directfb_window_clear_area;
   iface->set_background = gdk_directfb_window_set_background;
   iface->set_back_pixmap = gdk_directfb_window_set_back_pixmap;
-  iface->get_events = gdk_directfb_window_get_events;
-  iface->set_events = gdk_directfb_window_set_events;
   iface->reparent = gdk_directfb_window_reparent;
   iface->set_cursor = gdk_directfb_window_set_cursor;
   iface->get_geometry = gdk_directfb_window_get_geometry;
-  iface->get_origin = gdk_directfb_window_get_origin;
-  iface->get_offsets = _gdk_directfb_window_get_offsets;
-  iface->shape_combine_mask = gdk_directfb_window_shape_combine_mask;
+  iface->get_root_coords = gdk_directfb_window_get_root_coords;
+  iface->get_pointer = gdk_directfb_window_get_pointer;
+  iface->get_deskrelative_origin = gdk_directfb_window_get_deskrelative_origin;
   iface->shape_combine_region = gdk_directfb_window_shape_combine_region;
-  iface->set_child_shapes = gdk_directfb_window_set_child_shapes;
-  iface->merge_child_shapes = gdk_directfb_window_merge_child_shapes;
+  iface->input_shape_combine_region = gdk_directfb_window_input_shape_combine_region;
   iface->set_static_gravities = gdk_directfb_window_set_static_gravities;
+  iface->queue_antiexpose = gdk_directfb_window_queue_antiexpose;
+  iface->queue_translation = gdk_directfb_window_queue_translation;
+  iface->destroy = gdk_directfb_window_destroy;
 }
 
 #define __GDK_WINDOW_X11_C__



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