]> Pileus Git - ~andy/gtk/blobdiff - gdk/broadway/gdkvisual-broadway.c
win32: Fix build
[~andy/gtk] / gdk / broadway / gdkvisual-broadway.c
index 350e8a2391e4f20fc267686f8b6d38024335ba5a..bad78d573a2bf5d352801f2d3cfef9737fe97185 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
  * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
  * file for a list of people on the GTK+ Team.  See the ChangeLog
  * files for a list of changes.  These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
  */
 
 #include "config.h"
 
-#include "gdkvisual.h"
+#include "gdkvisualprivate.h"
 
-#include "gdkx.h"
 #include "gdkprivate-broadway.h"
 #include "gdkscreen-broadway.h"
 #include "gdkinternals.h"
 
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-struct _GdkVisualPrivate
+struct _GdkBroadwayVisual
 {
-  Visual *xvisual;
-  GdkScreen *screen;
-  Colormap colormap;
+  GdkVisual visual;
 };
 
-struct _GdkVisualClass
+struct _GdkBroadwayVisualClass
 {
   GObjectClass parent_class;
 };
 
-static void     gdk_visual_add            (GdkVisual *visual);
 static void     gdk_visual_decompose_mask (gulong     mask,
                                           gint      *shift,
                                           gint      *prec);
-static guint    gdk_visual_hash           (Visual    *key);
-static gboolean gdk_visual_equal          (Visual    *a,
-                                          Visual    *b);
-
 
-#ifdef G_ENABLE_DEBUG
 
-static const gchar *const visual_names[] =
-{
-  "static gray",
-  "grayscale",
-  "static color",
-  "pseudo color",
-  "true color",
-  "direct color",
-};
-
-#endif /* G_ENABLE_DEBUG */
-
-G_DEFINE_TYPE (GdkVisual, gdk_visual, G_TYPE_OBJECT)
+G_DEFINE_TYPE (GdkBroadwayVisual, gdk_broadway_visual, GDK_TYPE_VISUAL)
 
 static void
-gdk_visual_finalize (GObject *object)
+gdk_broadway_visual_finalize (GObject *object)
 {
-  GdkVisualPrivate *priv = (GdkVisualPrivate *) object;
-
-  if (priv->colormap != None)
-    XFreeColormap (GDK_SCREEN_XDISPLAY (priv->screen),
-                   priv->colormap);
-
-  G_OBJECT_CLASS (gdk_visual_parent_class)->finalize (object);
+  G_OBJECT_CLASS (gdk_broadway_visual_parent_class)->finalize (object);
 }
 
 static void
-gdk_visual_class_init (GdkVisualClass *visual_class)
+gdk_broadway_visual_class_init (GdkBroadwayVisualClass *visual_class)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (visual_class);
 
-  g_type_class_add_private (object_class, sizeof (GdkVisualPrivate));
-
-  object_class->finalize = gdk_visual_finalize;
+  object_class->finalize = gdk_broadway_visual_finalize;
 }
 
 static void
-gdk_visual_init (GdkVisual *visual)
+gdk_broadway_visual_init (GdkBroadwayVisual *visual)
 {
-  visual->priv = G_TYPE_INSTANCE_GET_PRIVATE (visual,
-                                              GDK_TYPE_VISUAL,
-                                              GdkVisualPrivate);
-
-  visual->priv->colormap = None;
 }
 
 void
-_gdk_visual_init (GdkScreen *screen)
+_gdk_broadway_screen_init_visuals (GdkScreen *screen)
 {
-  static const gint possible_depths[8] = { 32, 30, 24, 16, 15, 8, 4, 1 };
-  static const GdkVisualType possible_types[6] =
-    {
-      GDK_VISUAL_DIRECT_COLOR,
-      GDK_VISUAL_TRUE_COLOR,
-      GDK_VISUAL_PSEUDO_COLOR,
-      GDK_VISUAL_STATIC_COLOR,
-      GDK_VISUAL_GRAYSCALE,
-      GDK_VISUAL_STATIC_GRAY
-    };
-
-  GdkScreenX11 *screen_x11;
-  XVisualInfo *visual_list;
-  XVisualInfo visual_template;
-  GdkVisual *temp_visual;
-  Visual *default_xvisual;
+  GdkBroadwayScreen *broadway_screen;
   GdkVisual **visuals;
-  int nxvisuals;
   int nvisuals;
-  int i, j;
-  
-  g_return_if_fail (GDK_IS_SCREEN (screen));
-  screen_x11 = GDK_SCREEN_X11 (screen);
-
-  nxvisuals = 0;
-  visual_template.screen = screen_x11->screen_num;
-  visual_list = XGetVisualInfo (screen_x11->xdisplay, VisualScreenMask, &visual_template, &nxvisuals);
-  
-  visuals = g_new (GdkVisual *, nxvisuals);
-  for (i = 0; i < nxvisuals; i++)
-    visuals[i] = g_object_new (GDK_TYPE_VISUAL, NULL);
 
-  default_xvisual = DefaultVisual (screen_x11->xdisplay, screen_x11->screen_num);
-
-  nvisuals = 0;
-  for (i = 0; i < nxvisuals; i++)
-    {
-      visuals[nvisuals]->priv->screen = screen;
-      
-      if (visual_list[i].depth >= 1)
-       {
-#ifdef __cplusplus
-         switch (visual_list[i].c_class)
-#else /* __cplusplus */
-         switch (visual_list[i].class)
-#endif /* __cplusplus */
-           {
-           case StaticGray:
-             visuals[nvisuals]->type = GDK_VISUAL_STATIC_GRAY;
-             break;
-           case GrayScale:
-             visuals[nvisuals]->type = GDK_VISUAL_GRAYSCALE;
-             break;
-           case StaticColor:
-             visuals[nvisuals]->type = GDK_VISUAL_STATIC_COLOR;
-             break;
-           case PseudoColor:
-             visuals[nvisuals]->type = GDK_VISUAL_PSEUDO_COLOR;
-             break;
-           case TrueColor:
-             visuals[nvisuals]->type = GDK_VISUAL_TRUE_COLOR;
-             break;
-           case DirectColor:
-             visuals[nvisuals]->type = GDK_VISUAL_DIRECT_COLOR;
-             break;
-           }
-
-         visuals[nvisuals]->depth = visual_list[i].depth;
-         visuals[nvisuals]->byte_order =
-           (ImageByteOrder(screen_x11->xdisplay) == LSBFirst) ?
-           GDK_LSB_FIRST : GDK_MSB_FIRST;
-         visuals[nvisuals]->red_mask = visual_list[i].red_mask;
-         visuals[nvisuals]->green_mask = visual_list[i].green_mask;
-         visuals[nvisuals]->blue_mask = visual_list[i].blue_mask;
-         visuals[nvisuals]->colormap_size = visual_list[i].colormap_size;
-         visuals[nvisuals]->bits_per_rgb = visual_list[i].bits_per_rgb;
-         visuals[nvisuals]->priv->xvisual = visual_list[i].visual;
-
-         if ((visuals[nvisuals]->type == GDK_VISUAL_TRUE_COLOR) ||
-             (visuals[nvisuals]->type == GDK_VISUAL_DIRECT_COLOR))
-           {
-             gdk_visual_decompose_mask (visuals[nvisuals]->red_mask,
-                                        &visuals[nvisuals]->red_shift,
-                                        &visuals[nvisuals]->red_prec);
-
-             gdk_visual_decompose_mask (visuals[nvisuals]->green_mask,
-                                        &visuals[nvisuals]->green_shift,
-                                        &visuals[nvisuals]->green_prec);
-
-             gdk_visual_decompose_mask (visuals[nvisuals]->blue_mask,
-                                        &visuals[nvisuals]->blue_shift,
-                                        &visuals[nvisuals]->blue_prec);
-           }
-         else
-           {
-             visuals[nvisuals]->red_mask = 0;
-             visuals[nvisuals]->red_shift = 0;
-             visuals[nvisuals]->red_prec = 0;
-
-             visuals[nvisuals]->green_mask = 0;
-             visuals[nvisuals]->green_shift = 0;
-             visuals[nvisuals]->green_prec = 0;
-
-             visuals[nvisuals]->blue_mask = 0;
-             visuals[nvisuals]->blue_shift = 0;
-             visuals[nvisuals]->blue_prec = 0;
-           }
-         
-         nvisuals += 1;
-       }
-    }
-
-  if (visual_list)
-    XFree (visual_list);
-
-  for (i = 0; i < nvisuals; i++)
-    {
-      for (j = i+1; j < nvisuals; j++)
-       {
-         if (visuals[j]->depth >= visuals[i]->depth)
-           {
-             if ((visuals[j]->depth == 8) && (visuals[i]->depth == 8))
-               {
-                 if (visuals[j]->type == GDK_VISUAL_PSEUDO_COLOR)
-                   {
-                     temp_visual = visuals[j];
-                     visuals[j] = visuals[i];
-                     visuals[i] = temp_visual;
-                   }
-                 else if ((visuals[i]->type != GDK_VISUAL_PSEUDO_COLOR) &&
-                          visuals[j]->type > visuals[i]->type)
-                   {
-                     temp_visual = visuals[j];
-                     visuals[j] = visuals[i];
-                     visuals[i] = temp_visual;
-                   }
-               }
-             else if ((visuals[j]->depth > visuals[i]->depth) ||
-                      ((visuals[j]->depth == visuals[i]->depth) &&
-                       (visuals[j]->type > visuals[i]->type)))
-               {
-                 temp_visual = visuals[j];
-                 visuals[j] = visuals[i];
-                 visuals[i] = temp_visual;
-               }
-           }
-       }
-    }
-
-  for (i = 0; i < nvisuals; i++)
-    {
-      if (default_xvisual->visualid == visuals[i]->priv->xvisual->visualid)
-         {
-          screen_x11->system_visual = visuals[i];
-           visuals[i]->priv->colormap = DefaultColormap (screen_x11->xdisplay,
-                                                         screen_x11->screen_num);
-         }
-
-      /* For now, we only support 8888 ARGB for the "rgba visual".
-       * Additional formats (like ABGR) could be added later if they
-       * turn up.
-       */
-      if (visuals[i]->depth == 32 &&
-         (visuals[i]->red_mask   == 0xff0000 &&
-          visuals[i]->green_mask == 0x00ff00 &&
-          visuals[i]->blue_mask  == 0x0000ff))
-       {
-         screen_x11->rgba_visual = GDK_VISUAL (visuals[i]);
-       }
-    }
-
-#ifdef G_ENABLE_DEBUG 
-  if (_gdk_debug_flags & GDK_DEBUG_MISC)
-    {
-      static const gchar *const visual_names[] =
-      {
-        "static gray",
-        "grayscale",
-        "static color",
-        "pseudo color",
-        "true color",
-        "direct color",
-      };
-
-      for (i = 0; i < nvisuals; i++)
-        g_message ("visual: %s: %d",
-                   visual_names[visuals[i]->type],
-                   visuals[i]->depth);
-    }
-#endif /* G_ENABLE_DEBUG */
-
-  screen_x11->navailable_depths = 0;
-  for (i = 0; i < G_N_ELEMENTS (possible_depths); i++)
-    {
-      for (j = 0; j < nvisuals; j++)
-       {
-         if (visuals[j]->depth == possible_depths[i])
-           {
-             screen_x11->available_depths[screen_x11->navailable_depths++] = visuals[j]->depth;
-             break;
-           }
-       }
-    }
-
-  if (screen_x11->navailable_depths == 0)
-    g_error ("unable to find a usable depth");
-
-  screen_x11->navailable_types = 0;
-  for (i = 0; i < G_N_ELEMENTS (possible_types); i++)
-    {
-      for (j = 0; j < nvisuals; j++)
-       {
-         if (visuals[j]->type == possible_types[i])
-           {
-             screen_x11->available_types[screen_x11->navailable_types++] = visuals[j]->type;
-             break;
-           }
-       }
-    }
-
-  for (i = 0; i < nvisuals; i++)
-    gdk_visual_add ((GdkVisual*) visuals[i]);
-
-  if (screen_x11->navailable_types == 0)
-    g_error ("unable to find a usable visual type");
-
-  screen_x11->visuals = visuals;
-  screen_x11->nvisuals = nvisuals;
+  g_return_if_fail (GDK_IS_SCREEN (screen));
+  broadway_screen = GDK_BROADWAY_SCREEN (screen);
+
+  nvisuals = 2;
+  visuals = g_new (GdkVisual *, nvisuals);
+
+  visuals[0] = g_object_new (GDK_TYPE_BROADWAY_VISUAL, NULL);
+  visuals[0]->screen = screen;
+  visuals[0]->type = GDK_VISUAL_TRUE_COLOR;
+  visuals[0]->depth = 32;
+  visuals[0]->byte_order = (G_BYTE_ORDER == G_LITTLE_ENDIAN) ? GDK_LSB_FIRST : GDK_MSB_FIRST;
+  visuals[0]->red_mask = 0xff0000;
+  visuals[0]->green_mask = 0xff00;
+  visuals[0]->blue_mask = 0xff;
+  visuals[0]->colormap_size = 256;
+  visuals[0]->bits_per_rgb = 8;
+  gdk_visual_decompose_mask (visuals[0]->red_mask,
+                            &visuals[0]->red_shift,
+                            &visuals[0]->red_prec);
+  gdk_visual_decompose_mask (visuals[0]->green_mask,
+                            &visuals[0]->green_shift,
+                            &visuals[0]->green_prec);
+  gdk_visual_decompose_mask (visuals[0]->blue_mask,
+                            &visuals[0]->blue_shift,
+                            &visuals[0]->blue_prec);
+
+  visuals[1] = g_object_new (GDK_TYPE_BROADWAY_VISUAL, NULL);
+  visuals[1]->screen = screen;
+  visuals[1]->type = GDK_VISUAL_TRUE_COLOR;
+  visuals[1]->depth = 24;
+  visuals[1]->byte_order = (G_BYTE_ORDER == G_LITTLE_ENDIAN) ? GDK_LSB_FIRST : GDK_MSB_FIRST;
+  visuals[1]->red_mask = 0xff0000;
+  visuals[1]->green_mask = 0xff00;
+  visuals[1]->blue_mask = 0xff;
+  visuals[1]->colormap_size = 256;
+  visuals[1]->bits_per_rgb = 8;
+  gdk_visual_decompose_mask (visuals[1]->red_mask,
+                            &visuals[1]->red_shift,
+                            &visuals[1]->red_prec);
+  gdk_visual_decompose_mask (visuals[1]->green_mask,
+                            &visuals[1]->green_shift,
+                            &visuals[1]->green_prec);
+  gdk_visual_decompose_mask (visuals[1]->blue_mask,
+                            &visuals[1]->blue_shift,
+                            &visuals[1]->blue_prec);
+
+  broadway_screen->system_visual = visuals[1];
+  broadway_screen->rgba_visual = visuals[0];
+
+  broadway_screen->navailable_depths = 2;
+  broadway_screen->available_depths[0] = 32;
+  broadway_screen->available_depths[1] = 24;
+
+  broadway_screen->navailable_types = 1;
+  broadway_screen->available_types[0] = GDK_VISUAL_TRUE_COLOR;
+
+  broadway_screen->visuals = visuals;
+  broadway_screen->nvisuals = nvisuals;
 }
 
-/**
- * gdk_visual_get_best_depth:
- * 
- * Get the best available depth for the default GDK screen.  "Best"
- * means "largest," i.e. 32 preferred over 24 preferred over 8 bits
- * per pixel.
- * 
- * Return value: best available depth
- **/
 gint
-gdk_visual_get_best_depth (void)
+_gdk_broadway_screen_visual_get_best_depth (GdkScreen * screen)
 {
-  GdkScreen *screen = gdk_screen_get_default();
-  
-  return GDK_SCREEN_X11 (screen)->available_depths[0];
+  return GDK_BROADWAY_SCREEN (screen)->available_depths[0];
 }
 
-/**
- * gdk_visual_get_best_type:
- * 
- * Return the best available visual type for the default GDK screen.
- * 
- * Return value: best visual type
- **/
 GdkVisualType
-gdk_visual_get_best_type (void)
+_gdk_broadway_screen_visual_get_best_type (GdkScreen * screen)
 {
-  GdkScreen *screen = gdk_screen_get_default();
-  
-  return GDK_SCREEN_X11 (screen)->available_types[0];
+  return GDK_BROADWAY_SCREEN (screen)->available_types[0];
 }
 
-/**
- * gdk_screen_get_system_visual:
- * @screen: a #GdkScreen.
- * 
- * Get the system's default visual for @screen.
- * This is the visual for the root window of the display.
- * The return value should not be freed.
- * 
- * Return value: (transfer none): the system visual
- *
- * Since: 2.2
- **/
 GdkVisual *
-gdk_screen_get_system_visual (GdkScreen * screen)
+_gdk_broadway_screen_get_system_visual (GdkScreen * screen)
 {
   g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
 
-  return ((GdkVisual *) GDK_SCREEN_X11 (screen)->system_visual);
+  return ((GdkVisual *) GDK_BROADWAY_SCREEN (screen)->system_visual);
 }
 
-/**
- * gdk_visual_get_best:
- *
- * Get the visual with the most available colors for the default
- * GDK screen. The return value should not be freed.
- * 
- * Return value: (transfer none): best visual
- **/
 GdkVisual*
-gdk_visual_get_best (void)
+_gdk_broadway_screen_visual_get_best (GdkScreen * screen)
 {
-  GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (gdk_screen_get_default());
+  GdkBroadwayScreen *broadway_screen = GDK_BROADWAY_SCREEN (screen);
 
-  return (GdkVisual *)screen_x11->visuals[0];
+  return (GdkVisual *)broadway_screen->visuals[0];
 }
 
-/**
- * gdk_visual_get_best_with_depth:
- * @depth: a bit depth
- * 
- * Get the best visual with depth @depth for the default GDK screen.
- * Color visuals and visuals with mutable colormaps are preferred
- * over grayscale or fixed-colormap visuals. The return value should not
- * be freed. %NULL may be returned if no visual supports @depth.
- * 
- * Return value: (transfer none): best visual for the given depth
- **/
 GdkVisual*
-gdk_visual_get_best_with_depth (gint depth)
+_gdk_broadway_screen_visual_get_best_with_depth (GdkScreen * screen,
+                                                gint depth)
 {
-  GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (gdk_screen_get_default ());
+  GdkBroadwayScreen *broadway_screen = GDK_BROADWAY_SCREEN (screen);
   GdkVisual *return_val;
   int i;
-  
+
   return_val = NULL;
-  for (i = 0; i < screen_x11->nvisuals; i++)
-    if (depth == screen_x11->visuals[i]->depth)
+  for (i = 0; i < broadway_screen->nvisuals; i++)
+    if (depth == broadway_screen->visuals[i]->depth)
       {
-       return_val = (GdkVisual *) screen_x11->visuals[i];
+       return_val = (GdkVisual *) broadway_screen->visuals[i];
        break;
       }
 
   return return_val;
 }
 
-/**
- * gdk_visual_get_best_with_type:
- * @visual_type: a visual type
- *
- * Get the best visual of the given @visual_type for the default GDK screen.
- * Visuals with higher color depths are considered better. The return value
- * should not be freed. %NULL may be returned if no visual has type
- * @visual_type.
- * 
- * Return value: (transfer none): best visual of the given type
- **/
 GdkVisual*
-gdk_visual_get_best_with_type (GdkVisualType visual_type)
+_gdk_broadway_screen_visual_get_best_with_type (GdkScreen * screen,
+                                               GdkVisualType visual_type)
 {
-  GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (gdk_screen_get_default ());
+  GdkBroadwayScreen *broadway_screen = GDK_BROADWAY_SCREEN (screen);
   GdkVisual *return_val;
   int i;
 
   return_val = NULL;
-  for (i = 0; i < screen_x11->nvisuals; i++)
-    if (visual_type == screen_x11->visuals[i]->type)
+  for (i = 0; i < broadway_screen->nvisuals; i++)
+    if (visual_type == broadway_screen->visuals[i]->type)
       {
-       return_val = (GdkVisual *) screen_x11->visuals[i];
+       return_val = (GdkVisual *) broadway_screen->visuals[i];
        break;
       }
 
   return return_val;
 }
 
-/**
- * gdk_visual_get_best_with_both:
- * @depth: a bit depth
- * @visual_type: a visual type
- *
- * Combines gdk_visual_get_best_with_depth() and gdk_visual_get_best_with_type().
- * 
- * Return value: (transfer none): best visual with both @depth and
- *     @visual_type, or %NULL if none
- **/
 GdkVisual*
-gdk_visual_get_best_with_both (gint          depth,
-                              GdkVisualType visual_type)
+_gdk_broadway_screen_visual_get_best_with_both (GdkScreen * screen,
+                                               gint          depth,
+                                               GdkVisualType visual_type)
 {
-  GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (gdk_screen_get_default ());
+  GdkBroadwayScreen *broadway_screen = GDK_BROADWAY_SCREEN (screen);
   GdkVisual *return_val;
   int i;
 
   return_val = NULL;
-  for (i = 0; i < screen_x11->nvisuals; i++)
-    if ((depth == screen_x11->visuals[i]->depth) &&
-       (visual_type == screen_x11->visuals[i]->type))
+  for (i = 0; i < broadway_screen->nvisuals; i++)
+    if ((depth == broadway_screen->visuals[i]->depth) &&
+       (visual_type == broadway_screen->visuals[i]->type))
       {
-       return_val = (GdkVisual *) screen_x11->visuals[i];
+       return_val = (GdkVisual *) broadway_screen->visuals[i];
        break;
       }
 
   return return_val;
 }
 
-/**
- * gdk_query_depths:
- * @depths: (out) (array): return location for available depths
- * @count: (out): return location for number of available depths
- *
- * This function returns the available bit depths for the default
- * screen. It's equivalent to listing the visuals
- * (gdk_list_visuals()) and then looking at the depth field in each
- * visual, removing duplicates.
- * 
- * The array returned by this function should not be freed.
- * 
- **/
 void
-gdk_query_depths  (gint **depths,
-                  gint  *count)
+_gdk_broadway_screen_query_depths  (GdkScreen * screen,
+                                   gint **depths,
+                                   gint  *count)
 {
-  GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (gdk_screen_get_default ());
-  
-  *count = screen_x11->navailable_depths;
-  *depths = screen_x11->available_depths;
+  GdkBroadwayScreen *broadway_screen = GDK_BROADWAY_SCREEN (screen);
+
+  *count = broadway_screen->navailable_depths;
+  *depths = broadway_screen->available_depths;
 }
 
-/**
- * gdk_query_visual_types:
- * @visual_types: return location for the available visual types
- * @count: return location for the number of available visual types
- *
- * This function returns the available visual types for the default
- * screen. It's equivalent to listing the visuals
- * (gdk_list_visuals()) and then looking at the type field in each
- * visual, removing duplicates.
- * 
- * The array returned by this function should not be freed.
- **/
 void
-gdk_query_visual_types (GdkVisualType **visual_types,
-                       gint           *count)
+_gdk_broadway_screen_query_visual_types (GdkScreen * screen,
+                                        GdkVisualType **visual_types,
+                                        gint           *count)
 {
-  GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (gdk_screen_get_default ());
-  
-  *count = screen_x11->navailable_types;
-  *visual_types = screen_x11->available_types;
+  GdkBroadwayScreen *broadway_screen = GDK_BROADWAY_SCREEN (screen);
+
+  *count = broadway_screen->navailable_types;
+  *visual_types = broadway_screen->available_types;
 }
 
-/**
- * gdk_screen_list_visuals:
- * @screen: the relevant #GdkScreen.
- *  
- * Lists the available visuals for the specified @screen.
- * A visual describes a hardware image data format.
- * For example, a visual might support 24-bit color, or 8-bit color,
- * and might expect pixels to be in a certain format.
- *
- * Call g_list_free() on the return value when you're finished with it.
- * 
- * Return value: (transfer container) (element-type GdkVisual):
- *     a list of visuals; the list must be freed, but not its contents
- *
- * Since: 2.2
- **/
 GList *
-gdk_screen_list_visuals (GdkScreen *screen)
+_gdk_broadway_screen_list_visuals (GdkScreen *screen)
 {
   GList *list;
-  GdkScreenX11 *screen_x11;
+  GdkBroadwayScreen *broadway_screen;
   guint i;
 
   g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
-  screen_x11 = GDK_SCREEN_X11 (screen);
-  
+  broadway_screen = GDK_BROADWAY_SCREEN (screen);
+
   list = NULL;
 
-  for (i = 0; i < screen_x11->nvisuals; ++i)
-    list = g_list_append (list, screen_x11->visuals[i]);
+  for (i = 0; i < broadway_screen->nvisuals; ++i)
+    list = g_list_append (list, broadway_screen->visuals[i]);
 
   return list;
 }
 
-/**
- * gdk_x11_screen_lookup_visual:
- * @screen: a #GdkScreen.
- * @xvisualid: an X Visual ID.
- *
- * Looks up the #GdkVisual for a particular screen and X Visual ID.
- *
- * Returns: the #GdkVisual (owned by the screen object), or %NULL
- *   if the visual ID wasn't found.
- *
- * Since: 2.2
- */
-GdkVisual *
-gdk_x11_screen_lookup_visual (GdkScreen *screen,
-                             VisualID   xvisualid)
-{
-  int i;
-  GdkScreenX11 *screen_x11;
-  g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
-  screen_x11 = GDK_SCREEN_X11 (screen);
-
-  for (i = 0; i < screen_x11->nvisuals; i++)
-    if (xvisualid == screen_x11->visuals[i]->priv->xvisual->visualid)
-      return (GdkVisual *)  screen_x11->visuals[i];
-
-  return NULL;
-}
-
-/**
- * gdkx_visual_get:
- * @xvisualid: a X visual id.
- * 
- * Returns a #GdkVisual corresponding to a X visual. 
- * 
- * Return value: the #GdkVisual.
- **/
-GdkVisual*
-gdkx_visual_get (VisualID xvisualid)
-{
-  return gdk_x11_screen_lookup_visual (gdk_screen_get_default (), xvisualid);
-}
-
-static void
-gdk_visual_add (GdkVisual *visual)
-{
-  GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (visual->priv->screen);
-  
-  if (!screen_x11->visual_hash)
-    screen_x11->visual_hash = g_hash_table_new ((GHashFunc) gdk_visual_hash,
-                                                (GEqualFunc) gdk_visual_equal);
-
-  g_hash_table_insert (screen_x11->visual_hash, visual->priv->xvisual, visual);
-}
-
 static void
 gdk_visual_decompose_mask (gulong  mask,
                           gint   *shift,
@@ -653,78 +286,3 @@ gdk_visual_decompose_mask (gulong  mask,
       mask >>= 1;
     }
 }
-
-static guint
-gdk_visual_hash (Visual *key)
-{
-  return key->visualid;
-}
-
-static gboolean
-gdk_visual_equal (Visual *a,
-                 Visual *b)
-{
-  return (a->visualid == b->visualid);
-}
-
-/**
- * _gdk_visual_get_x11_colormap:
- * @visual: the visual to get the colormap from
- *
- * Gets the colormap to use
- *
- * Returns: the X Colormap to use for new windows using @visual
- **/
-Colormap
-_gdk_visual_get_x11_colormap (GdkVisual *visual)
-{
-  GdkVisualPrivate *priv;
-
-  g_return_val_if_fail (GDK_IS_VISUAL (visual), None);
-
-  priv = visual->priv;
-
-  if (priv->colormap == None)
-    {
-      priv->colormap = XCreateColormap (GDK_SCREEN_XDISPLAY (priv->screen),
-                                        GDK_SCREEN_XROOTWIN (priv->screen),
-                                        GDK_VISUAL_XVISUAL (visual),
-                                        AllocNone);
-    }
-
-  return priv->colormap;
-}
-
-/**
- * gdk_x11_visual_get_xvisual:
- * @visual: a #GdkVisual.
- * 
- * Returns the X visual belonging to a #GdkVisual.
- * 
- * Return value: an Xlib <type>Visual*</type>.
- **/
-Visual *
-gdk_x11_visual_get_xvisual (GdkVisual *visual)
-{
-  g_return_val_if_fail (visual != NULL, NULL);
-
-  return visual->priv->xvisual;
-}
-
-/**
- * gdk_visual_get_screen:
- * @visual: a #GdkVisual
- * 
- * Gets the screen to which this visual belongs
- * 
- * Return value: (transfer none): the screen to which this visual belongs.
- *
- * Since: 2.2
- **/
-GdkScreen *
-gdk_visual_get_screen (GdkVisual *visual)
-{
-  g_return_val_if_fail (GDK_IS_VISUAL (visual), NULL);
-
-  return visual->priv->screen;
-}