[gtk+] _gdk_window_impl_new() on directfb



commit 313b6f39a62fae3bbbd6d55993a2c3cfa03e3ba9
Author: Cody Russell <bratsche gnome org>
Date:   Mon Jul 27 15:39:28 2009 -0500

    _gdk_window_impl_new() on directfb

 gdk/directfb/gdkwindow-directfb.c |  159 ++++++++++++++-----------------------
 1 files changed, 59 insertions(+), 100 deletions(-)
---
diff --git a/gdk/directfb/gdkwindow-directfb.c b/gdk/directfb/gdkwindow-directfb.c
index b7795f8..42196f7 100644
--- a/gdk/directfb/gdkwindow-directfb.c
+++ b/gdk/directfb/gdkwindow-directfb.c
@@ -351,50 +351,35 @@ _gdk_windowing_window_init (void)
 }
 
 
-
-GdkWindow *
-gdk_directfb_window_new (GdkWindow              *parent,
-                         GdkWindowAttr          *attributes,
-                         gint                    attributes_mask,
-                         DFBWindowCapabilities   window_caps,
-                         DFBWindowOptions        window_options,
-                         DFBSurfaceCapabilities  surface_caps)
+void
+_gdk_window_impl_new (GdkWindow     *window,
+                      GdkWindow     *real_parent,
+                      GdkScreen     *screen,
+                      GdkVisual     *visual,
+                      GdkEventMask   event_mask,
+                      GdkWindowAttr *attributes,
+                      gint           attributes_mask)
 {
-  GdkWindow             *window;
   GdkWindowObject       *private;
   GdkWindowObject       *parent_private;
   GdkWindowImplDirectFB *impl;
   GdkWindowImplDirectFB *parent_impl;
-  GdkVisual             *visual;
   DFBWindowDescription   desc;
-  gint x, y;
-
-  g_return_val_if_fail (attributes != NULL, NULL);
 
-  D_DEBUG_AT( GDKDFB_Window, "%s( %p )\n", __FUNCTION__, parent );
-
-  if (!parent || attributes->window_type != GDK_WINDOW_CHILD)
-    parent = _gdk_parent_root;
+  impl = g_object_new (_gdk_window_impl_get_type (), NULL);
+  impl->drawable.wrapper = GDK_DRAWABLE (window);
+  impl->gdkWindow = window;
 
-  window = g_object_new (GDK_TYPE_WINDOW, NULL);
   private = GDK_WINDOW_OBJECT (window);
-  private->impl = g_object_new (_gdk_window_impl_get_type (), NULL);
-
-  parent_private = GDK_WINDOW_OBJECT (parent);
-  parent_impl = GDK_WINDOW_IMPL_DIRECTFB (parent_private->impl);
-  private->parent = parent_private;
+  private->impl = (GdkDrawable *)impl;
 
-  x = (attributes_mask & GDK_WA_X) ? attributes->x : 0;
-  y = (attributes_mask & GDK_WA_Y) ? attributes->y : 0;
+  private->x = (attributes_mask & GDK_WA_X) ? attributes->x : 0;
+  private->y = (attributes_mask & GDK_WA_Y) ? attributes->y : 0;
 
-  gdk_window_set_events (window, attributes->event_mask | GDK_STRUCTURE_MASK);
-
-  impl = GDK_WINDOW_IMPL_DIRECTFB (private->impl);
-  impl->drawable.wrapper = GDK_DRAWABLE (window);
-  impl->gdkWindow      = window;
+  parent_private = private->parent;
+  parent_impl = GDK_WINDOW_IMPL_DIRECTFB (parent_private->impl);
 
-  private->x = x;
-  private->y = y;
+  private->parent = parent_private;
 
   _gdk_directfb_calc_abs (window);
 
@@ -405,24 +390,20 @@ gdk_directfb_window_new (GdkWindow              *parent,
 
   desc.flags = 0;
 
-  if (attributes_mask & GDK_WA_VISUAL)
-    visual = attributes->visual;
-  else
-    visual = gdk_drawable_get_visual (parent);
-
   switch (attributes->wclass)
     {
     case GDK_INPUT_OUTPUT:
       private->input_only = FALSE;
 
       desc.flags |= DWDESC_PIXELFORMAT;
-      desc.pixelformat = ((GdkVisualDirectFB *) visual)->format;
+      desc.pixelformat = ((GdkVisualDirectFB *)visual)->format;
 
       if (DFB_PIXELFORMAT_HAS_ALPHA (desc.pixelformat))
         {
           desc.flags |= DWDESC_CAPS;
           desc.caps = DWCAPS_ALPHACHANNEL;
         }
+
       break;
 
     case GDK_INPUT_ONLY:
@@ -432,9 +413,9 @@ gdk_directfb_window_new (GdkWindow              *parent,
       break;
 
     default:
-      g_warning ("gdk_window_new: unsupported window class\n");
+      g_warning ("_gdk_window_impl_new: unsupported window class\n");
       _gdk_window_destroy (window, FALSE);
-      return NULL;
+      return;
     }
 
   switch (private->window_type)
@@ -442,59 +423,50 @@ gdk_directfb_window_new (GdkWindow              *parent,
     case GDK_WINDOW_TOPLEVEL:
     case GDK_WINDOW_DIALOG:
     case GDK_WINDOW_TEMP:
-      desc.flags |= ( DWDESC_WIDTH | DWDESC_HEIGHT |
-                      DWDESC_POSX  | DWDESC_POSY );
-      desc.posx   = x;
-      desc.posy   = y;
+      desc.flags |= (DWDESC_WIDTH | DWDESC_HEIGHT |
+                     DWDESC_POSX  | DWDESC_POSY);
+      desc.posx   = private->x;
+      desc.posy   = private->y;
       desc.width  = impl->drawable.width;
       desc.height = impl->drawable.height;
-#if 0
-      if (window_caps)
+
+      if (!create_directfb_window (impl, &desc, DWOP_NONE))
         {
-          if (! (desc.flags & DWDESC_CAPS))
-            {
-              desc.flags |= DWDESC_CAPS;
-              desc.caps   = DWCAPS_NONE;
-            }
+          g_assert (0);
+          _gdk_window_destroy (window, FALSE);
 
-          desc.caps |= window_caps;
+          return;
         }
 
-      if (surface_caps)
+      if (desc.caps != DWCAPS_INPUTONLY)
         {
-          desc.flags |= DWDESC_SURFACE_CAPS;
-          desc.surface_caps = surface_caps;
+          impl->window->SetOpacity (impl->window, 0x00);
         }
-#endif
 
-      if (!create_directfb_window (impl, &desc, window_options))
-        {
-		  g_assert(0);
-          _gdk_window_destroy (window, FALSE);
-          return NULL;
-        }
-      	if( desc.caps != DWCAPS_INPUTONLY )
-			impl->window->SetOpacity(impl->window, 0x00 );
       break;
 
     case GDK_WINDOW_CHILD:
-	   impl->window=NULL;
+      impl->window = NULL;
+
       if (!private->input_only && parent_impl->drawable.surface)
         {
-
-          DFBRectangle rect =
-          { x, y, impl->drawable.width, impl->drawable.height };
+          DFBRectangle rect = { private->x,
+                                private->y,
+                                impl->drawable.width,
+                                impl->drawable.height };
           parent_impl->drawable.surface->GetSubSurface (parent_impl->drawable.surface,
                                                         &rect,
                                                         &impl->drawable.surface);
         }
+
       break;
 
     default:
-      g_warning ("gdk_window_new: unsupported window type: %d",
+      g_warning ("_gdk_window_impl_new: unsupported window type: %d",
                  private->window_type);
       _gdk_window_destroy (window, FALSE);
-      return NULL;
+
+      return;
     }
 
   if (impl->drawable.surface)
@@ -502,38 +474,39 @@ gdk_directfb_window_new (GdkWindow              *parent,
       GdkColormap *colormap;
 
       impl->drawable.surface->GetPixelFormat (impl->drawable.surface,
-					      &impl->drawable.format);
+                                              &impl->drawable.format);
 
-  	  private->depth = DFB_BITS_PER_PIXEL(impl->drawable.format);
+      private->depth = DFB_BITS_PER_PIXEL (impl->drawable.format);
 
       if ((attributes_mask & GDK_WA_COLORMAP) && attributes->colormap)
-	{
-	  colormap = attributes->colormap;
-	}
+        {
+          colormap = attributes->colormap;
+        }
       else
-	{
-	  if (gdk_visual_get_system () == visual)
-	    colormap = gdk_colormap_get_system ();
-	  else
-	    colormap =gdk_drawable_get_colormap (parent);
-	}
+        {
+          if (gdk_visual_get_system () == visual)
+            colormap = gdk_colormap_get_system ();
+          else
+            colormap = gdk_colormap_new (visual, FALSE);
+        }
 
       gdk_drawable_set_colormap (GDK_DRAWABLE (window), colormap);
     }
   else
     {
       impl->drawable.format = ((GdkVisualDirectFB *)visual)->format;
-  	  private->depth = visual->depth;
+      private->depth = visual->depth;
     }
 
-  gdk_window_set_cursor (window, ((attributes_mask & GDK_WA_CURSOR) ?
-                                  (attributes->cursor) : NULL));
+  gdk_window_set_cursor (window,
+                         ((attributes_mask & GDK_WA_CURSOR) ?
+                          (attributes->cursor) : NULL));
 
   if (parent_private)
     parent_private->children = g_list_prepend (parent_private->children,
                                                window);
 
-  /* we hold a reference count on ourselves */
+  /* we hold a reference count on ourself */
   g_object_ref (window);
 
   if (impl->window)
@@ -545,21 +518,6 @@ gdk_directfb_window_new (GdkWindow              *parent,
 
   if (attributes_mask & GDK_WA_TYPE_HINT)
     gdk_window_set_type_hint (window, attributes->type_hint);
-
-  return window;
-}
-
-GdkWindow *
-_gdk_window_new (GdkWindow     *parent,
-                 GdkWindowAttr *attributes,
-                 gint           attributes_mask)
-{
-  g_return_val_if_fail (attributes != NULL, NULL);
-
-  D_DEBUG_AT( GDKDFB_Window, "%s( %p )\n", __FUNCTION__, parent );
-
-  return gdk_directfb_window_new (parent, attributes, attributes_mask,
-                                  DWCAPS_NONE, DWOP_NONE, DSCAPS_NONE);
 }
 
 void
@@ -2827,6 +2785,7 @@ _gdk_windowing_window_get_next_serial (GdkDisplay *display)
 GdkRegion *
 _gdk_windowing_window_get_input_shape (GdkWindow *window)
 {
+  return NULL;
 }
 
 void



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