Blame gdk/directfb/gdkvisual-directfb.c

Packit 98cdb6
/* GDK - The GIMP Drawing Kit
Packit 98cdb6
 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
Packit 98cdb6
 *
Packit 98cdb6
 * This library is free software; you can redistribute it and/or
Packit 98cdb6
 * modify it under the terms of the GNU Lesser General Public
Packit 98cdb6
 * License as published by the Free Software Foundation; either
Packit 98cdb6
 * version 2 of the License, or (at your option) any later version.
Packit 98cdb6
 *
Packit 98cdb6
 * This library is distributed in the hope that it will be useful,
Packit 98cdb6
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 98cdb6
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 98cdb6
 * Lesser General Public License for more details.
Packit 98cdb6
 *
Packit 98cdb6
 * You should have received a copy of the GNU Lesser General Public
Packit 98cdb6
 * License along with this library; if not, write to the
Packit 98cdb6
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Packit 98cdb6
 * Boston, MA 02111-1307, USA.
Packit 98cdb6
 */
Packit 98cdb6
Packit 98cdb6
/*
Packit 98cdb6
 * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
Packit 98cdb6
 * file for a list of people on the GTK+ Team.
Packit 98cdb6
 */
Packit 98cdb6
Packit 98cdb6
/*
Packit 98cdb6
 * GTK+ DirectFB backend
Packit 98cdb6
 * Copyright (C) 2001-2002  convergence integrated media GmbH
Packit 98cdb6
 * Copyright (C) 2002-2004  convergence GmbH
Packit 98cdb6
 * Written by Denis Oliver Kropp <dok@convergence.de> and
Packit 98cdb6
 *            Sven Neumann <sven@convergence.de>
Packit 98cdb6
 */
Packit 98cdb6
Packit 98cdb6
#include "config.h"
Packit 98cdb6
Packit 98cdb6
#include "gdkdirectfb.h"
Packit 98cdb6
#include "gdkprivate-directfb.h"
Packit 98cdb6
Packit 98cdb6
#include "gdkscreen.h"
Packit 98cdb6
#include "gdkvisual.h"
Packit 98cdb6
#include "gdkalias.h"
Packit 98cdb6
Packit 98cdb6
Packit 98cdb6
struct _GdkVisualClass
Packit 98cdb6
{
Packit 98cdb6
  GObjectClass parent_class;
Packit 98cdb6
};
Packit 98cdb6
Packit 98cdb6
Packit 98cdb6
static void                gdk_visual_decompose_mask  (gulong   mask,
Packit 98cdb6
                                                       gint    *shift,
Packit 98cdb6
                                                       gint    *prec);
Packit 98cdb6
static GdkVisualDirectFB * gdk_directfb_visual_create (DFBSurfacePixelFormat  pixelformat);
Packit 98cdb6
Packit 98cdb6
Packit 98cdb6
static DFBSurfacePixelFormat formats[] =
Packit 98cdb6
  {
Packit 98cdb6
    DSPF_ARGB,
Packit 98cdb6
    DSPF_LUT8,
Packit 98cdb6
    DSPF_RGB32,
Packit 98cdb6
    DSPF_RGB24,
Packit 98cdb6
    DSPF_RGB16,
Packit 98cdb6
    DSPF_ARGB1555,
Packit 98cdb6
    DSPF_RGB332
Packit 98cdb6
  };
Packit 98cdb6
Packit 98cdb6
GdkVisual                * system_visual                                = NULL;
Packit 98cdb6
static GdkVisualDirectFB * visuals[G_N_ELEMENTS (formats) + 1]          = { NULL };
Packit 98cdb6
static gint                available_depths[G_N_ELEMENTS (formats) + 1] = {0};
Packit 98cdb6
static GdkVisualType       available_types[G_N_ELEMENTS (formats) + 1]  = {0};
Packit 98cdb6
Packit 98cdb6
Packit 98cdb6
static void
Packit 98cdb6
gdk_visual_finalize (GObject *object)
Packit 98cdb6
{
Packit 98cdb6
  g_error ("A GdkVisual object was finalized. This should not happen");
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
static void
Packit 98cdb6
gdk_visual_class_init (GObjectClass *class)
Packit 98cdb6
{
Packit 98cdb6
  class->finalize = gdk_visual_finalize;
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
GType
Packit 98cdb6
gdk_visual_get_type (void)
Packit 98cdb6
{
Packit 98cdb6
  static GType object_type = 0;
Packit 98cdb6
Packit 98cdb6
  if (!object_type)
Packit 98cdb6
    {
Packit 98cdb6
      const GTypeInfo object_info =
Packit 98cdb6
        {
Packit 98cdb6
          sizeof (GdkVisualClass),
Packit 98cdb6
          (GBaseInitFunc) NULL,
Packit 98cdb6
          (GBaseFinalizeFunc) NULL,
Packit 98cdb6
          (GClassInitFunc) gdk_visual_class_init,
Packit 98cdb6
          NULL,           /* class_finalize */
Packit 98cdb6
          NULL,           /* class_data */
Packit 98cdb6
          sizeof (GdkVisualDirectFB),
Packit 98cdb6
          0,              /* n_preallocs */
Packit 98cdb6
          (GInstanceInitFunc) NULL,
Packit 98cdb6
        };
Packit 98cdb6
Packit 98cdb6
      object_type = g_type_register_static (G_TYPE_OBJECT,
Packit 98cdb6
                                            "GdkVisual",
Packit 98cdb6
                                            &object_info, 0);
Packit 98cdb6
    }
Packit 98cdb6
Packit 98cdb6
  return object_type;
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
void
Packit 98cdb6
_gdk_visual_init (void)
Packit 98cdb6
{
Packit 98cdb6
  DFBDisplayLayerConfig  dlc;
Packit 98cdb6
  DFBSurfaceDescription  desc;
Packit 98cdb6
  IDirectFBSurface      *dest;
Packit 98cdb6
  gint                   i, c;
Packit 98cdb6
Packit 98cdb6
Packit 98cdb6
  _gdk_display->layer->GetConfiguration (_gdk_display->layer, &dlc);
Packit 98cdb6
  g_assert (dlc.pixelformat != DSPF_UNKNOWN);
Packit 98cdb6
Packit 98cdb6
  dest = gdk_display_dfb_create_surface (_gdk_display, dlc.pixelformat, 8, 8);
Packit 98cdb6
  g_assert (dest != NULL);
Packit 98cdb6
Packit 98cdb6
  /* We could provide all visuals since DirectFB allows us to mix
Packit 98cdb6
     surface formats. Blitting with format conversion can however
Packit 98cdb6
     be incredibly slow, so we've choosen to register only those
Packit 98cdb6
     visuals that can be blitted to the display layer in hardware.
Packit 98cdb6
Packit 98cdb6
     If you want to use a special pixelformat that is not registered
Packit 98cdb6
     here, you can create it using the DirectFB-specific function
Packit 98cdb6
     gdk_directfb_visual_by_format().
Packit 98cdb6
     Note:
Packit 98cdb6
     changed to do all formats but we should redo this code
Packit 98cdb6
     to ensure the base format ARGB LUT8 RGB etc then add ones supported
Packit 98cdb6
     by the hardware
Packit 98cdb6
  */
Packit 98cdb6
  for (i = 0; i < G_N_ELEMENTS (formats); i++)
Packit 98cdb6
    {
Packit 98cdb6
      IDirectFBSurface    *src;
Packit 98cdb6
      DFBAccelerationMask  acc;
Packit 98cdb6
Packit 98cdb6
      desc.flags = DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_PIXELFORMAT;
Packit 98cdb6
      desc.width       = 8;
Packit 98cdb6
      desc.height      = 8;
Packit 98cdb6
      desc.pixelformat = formats[i];
Packit 98cdb6
      //call direct so fail silently  is ok
Packit 98cdb6
      if (_gdk_display->directfb->CreateSurface (_gdk_display->directfb,
Packit 98cdb6
                                                 &desc, &src) != DFB_OK)
Packit 98cdb6
        continue;
Packit 98cdb6
Packit 98cdb6
      visuals[i] = gdk_directfb_visual_create (formats[i]);
Packit 98cdb6
Packit 98cdb6
      dest->GetAccelerationMask (dest, src, &acc;;
Packit 98cdb6
Packit 98cdb6
      if (acc & DFXL_BLIT || formats[i] == dlc.pixelformat)
Packit 98cdb6
        {
Packit 98cdb6
          system_visual = GDK_VISUAL (visuals[i]);
Packit 98cdb6
        }
Packit 98cdb6
Packit 98cdb6
      src->Release (src);
Packit 98cdb6
    }
Packit 98cdb6
Packit 98cdb6
  dest->Release (dest);
Packit 98cdb6
Packit 98cdb6
  //fallback to ARGB must be supported
Packit 98cdb6
  if (!system_visual)
Packit 98cdb6
    {
Packit 98cdb6
      g_assert (visuals[DSPF_ARGB] != NULL);
Packit 98cdb6
      system_visual = GDK_VISUAL(visuals[DSPF_ARGB]);
Packit 98cdb6
    }
Packit 98cdb6
Packit 98cdb6
  g_assert (system_visual != NULL);
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
gint
Packit 98cdb6
gdk_visual_get_best_depth (void)
Packit 98cdb6
{
Packit 98cdb6
  return system_visual->depth;
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
GdkVisualType
Packit 98cdb6
gdk_visual_get_best_type (void)
Packit 98cdb6
{
Packit 98cdb6
  return system_visual->type;
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
GdkVisual *
Packit 98cdb6
gdk_screen_get_system_visual (GdkScreen *screen)
Packit 98cdb6
{
Packit 98cdb6
  g_assert (system_visual);
Packit 98cdb6
  return system_visual;
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
GdkVisual *
Packit 98cdb6
gdk_visual_get_best (void)
Packit 98cdb6
{
Packit 98cdb6
  return system_visual;
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
GdkVisual *
Packit 98cdb6
gdk_visual_get_best_with_depth (gint depth)
Packit 98cdb6
{
Packit 98cdb6
  gint i;
Packit 98cdb6
Packit 98cdb6
  for (i = 0; visuals[i]; i++)
Packit 98cdb6
    {
Packit 98cdb6
      if (visuals[i]) {
Packit 98cdb6
        GdkVisual *visual = GDK_VISUAL (visuals[i]);
Packit 98cdb6
Packit 98cdb6
        if (depth == visual->depth)
Packit 98cdb6
          return visual;
Packit 98cdb6
      }
Packit 98cdb6
    }
Packit 98cdb6
Packit 98cdb6
  return NULL;
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
GdkVisual *
Packit 98cdb6
gdk_visual_get_best_with_type (GdkVisualType visual_type)
Packit 98cdb6
{
Packit 98cdb6
  gint i;
Packit 98cdb6
Packit 98cdb6
  for (i = 0; visuals[i]; i++)
Packit 98cdb6
    {
Packit 98cdb6
      if (visuals[i]) {
Packit 98cdb6
        GdkVisual *visual = GDK_VISUAL (visuals[i]);
Packit 98cdb6
Packit 98cdb6
        if (visual_type == visual->type)
Packit 98cdb6
          return visual;
Packit 98cdb6
      }
Packit 98cdb6
    }
Packit 98cdb6
Packit 98cdb6
  return NULL;
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
GdkVisual*
Packit 98cdb6
gdk_visual_get_best_with_both (gint          depth,
Packit 98cdb6
                               GdkVisualType visual_type)
Packit 98cdb6
{
Packit 98cdb6
  gint i;
Packit 98cdb6
Packit 98cdb6
  for (i = 0; visuals[i]; i++)
Packit 98cdb6
    {
Packit 98cdb6
      if (visuals[i]) {
Packit 98cdb6
        GdkVisual *visual = GDK_VISUAL (visuals[i]);
Packit 98cdb6
Packit 98cdb6
        if (depth == visual->depth && visual_type == visual->type)
Packit 98cdb6
          return visual;
Packit 98cdb6
      }
Packit 98cdb6
    }
Packit 98cdb6
Packit 98cdb6
  return system_visual;
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
void
Packit 98cdb6
gdk_query_depths (gint **depths,
Packit 98cdb6
                  gint  *count)
Packit 98cdb6
{
Packit 98cdb6
  gint i;
Packit 98cdb6
Packit 98cdb6
  for (i = 0; available_depths[i]; i++)
Packit 98cdb6
    ;
Packit 98cdb6
Packit 98cdb6
  *count = i;
Packit 98cdb6
  *depths = available_depths;
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
void
Packit 98cdb6
gdk_query_visual_types (GdkVisualType **visual_types,
Packit 98cdb6
                        gint           *count)
Packit 98cdb6
{
Packit 98cdb6
  gint i;
Packit 98cdb6
Packit 98cdb6
  for (i = 0; available_types[i]; i++)
Packit 98cdb6
    ;
Packit 98cdb6
Packit 98cdb6
  *count = i;
Packit 98cdb6
  *visual_types = available_types;
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
GList *
Packit 98cdb6
gdk_screen_list_visuals (GdkScreen *screen)
Packit 98cdb6
{
Packit 98cdb6
  GList *list = NULL;
Packit 98cdb6
  gint   i;
Packit 98cdb6
Packit 98cdb6
  for (i = 0; visuals[i]; i++)
Packit 98cdb6
    if (visuals[i]) {
Packit 98cdb6
      GdkVisual * vis = GDK_VISUAL (visuals[i]);
Packit 98cdb6
      list = g_list_append (list,vis);
Packit 98cdb6
    }
Packit 98cdb6
Packit 98cdb6
  return list;
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
/**
Packit 98cdb6
 * gdk_directfb_visual_by_format:
Packit 98cdb6
 * @pixel_format: the pixel_format of the requested visual
Packit 98cdb6
 *
Packit 98cdb6
 * This function is specific to the DirectFB backend. It allows
Packit 98cdb6
 * to specify a GdkVisual by @pixel_format.
Packit 98cdb6
 *
Packit 98cdb6
 * At startup, only those visuals that can be blitted
Packit 98cdb6
 * hardware-accelerated are registered.  By using
Packit 98cdb6
 * gdk_directfb_visual_by_format() you can retrieve visuals that
Packit 98cdb6
 * don't match this criteria since this function will try to create
Packit 98cdb6
 * a new visual for the desired @pixel_format for you.
Packit 98cdb6
 *
Packit 98cdb6
 * Return value: a pointer to the GdkVisual or %NULL if the
Packit 98cdb6
 * pixel_format is unsupported.
Packit 98cdb6
 **/
Packit 98cdb6
GdkVisual *
Packit 98cdb6
gdk_directfb_visual_by_format (DFBSurfacePixelFormat pixel_format)
Packit 98cdb6
{
Packit 98cdb6
  gint i;
Packit 98cdb6
Packit 98cdb6
  /* first check if one the registered visuals matches */
Packit 98cdb6
  for (i = 0; visuals[i]; i++)
Packit 98cdb6
    if (visuals[i] && visuals[i]->format == pixel_format)
Packit 98cdb6
      return GDK_VISUAL (visuals[i]);
Packit 98cdb6
Packit 98cdb6
  /* none matched, try to create a new one for this pixel_format */
Packit 98cdb6
  {
Packit 98cdb6
    DFBSurfaceDescription  desc;
Packit 98cdb6
    IDirectFBSurface      *test;
Packit 98cdb6
Packit 98cdb6
    desc.flags       = DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_PIXELFORMAT;
Packit 98cdb6
    desc.width       = 8;
Packit 98cdb6
    desc.height      = 8;
Packit 98cdb6
    desc.pixelformat = pixel_format;
Packit 98cdb6
Packit 98cdb6
    if (_gdk_display->directfb->CreateSurface (_gdk_display->directfb,
Packit 98cdb6
                                               &desc, &test) != DFB_OK)
Packit 98cdb6
      return NULL;
Packit 98cdb6
Packit 98cdb6
    test->Release (test);
Packit 98cdb6
  }
Packit 98cdb6
Packit 98cdb6
  return GDK_VISUAL (gdk_directfb_visual_create (pixel_format));
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
GdkScreen *
Packit 98cdb6
gdk_visual_get_screen (GdkVisual *visual)
Packit 98cdb6
{
Packit 98cdb6
  g_return_val_if_fail (GDK_IS_VISUAL (visual), NULL);
Packit 98cdb6
Packit 98cdb6
  return gdk_screen_get_default ();
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
static void
Packit 98cdb6
gdk_visual_decompose_mask (gulong  mask,
Packit 98cdb6
                           gint   *shift,
Packit 98cdb6
                           gint   *prec)
Packit 98cdb6
{
Packit 98cdb6
  *shift = 0;
Packit 98cdb6
  *prec  = 0;
Packit 98cdb6
Packit 98cdb6
  while (!(mask & 0x1))
Packit 98cdb6
    {
Packit 98cdb6
      (*shift)++;
Packit 98cdb6
      mask >>= 1;
Packit 98cdb6
    }
Packit 98cdb6
Packit 98cdb6
  while (mask & 0x1)
Packit 98cdb6
    {
Packit 98cdb6
      (*prec)++;
Packit 98cdb6
      mask >>= 1;
Packit 98cdb6
    }
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
static GdkVisualDirectFB *
Packit 98cdb6
gdk_directfb_visual_create (DFBSurfacePixelFormat  pixelformat)
Packit 98cdb6
{
Packit 98cdb6
  GdkVisual *visual;
Packit 98cdb6
  gint       i;
Packit 98cdb6
Packit 98cdb6
  for (i = 0; i < G_N_ELEMENTS (formats); i++)
Packit 98cdb6
    if (formats[i] == pixelformat)
Packit 98cdb6
      break;
Packit 98cdb6
Packit 98cdb6
  if (i ==  G_N_ELEMENTS (formats))
Packit 98cdb6
    {
Packit 98cdb6
      g_warning ("unsupported pixelformat");
Packit 98cdb6
      return NULL;
Packit 98cdb6
    }
Packit 98cdb6
Packit 98cdb6
  visual = g_object_new (GDK_TYPE_VISUAL, NULL);
Packit 98cdb6
Packit 98cdb6
  switch (pixelformat)
Packit 98cdb6
    {
Packit 98cdb6
    case DSPF_LUT8:
Packit 98cdb6
      visual->type         = GDK_VISUAL_PSEUDO_COLOR;
Packit 98cdb6
      visual->bits_per_rgb = 8;
Packit 98cdb6
      break;
Packit 98cdb6
Packit 98cdb6
    case DSPF_RGB332:
Packit 98cdb6
      visual->type         = GDK_VISUAL_STATIC_COLOR;
Packit 98cdb6
      visual->bits_per_rgb = 3;
Packit 98cdb6
      break;
Packit 98cdb6
Packit 98cdb6
    case DSPF_ARGB1555:
Packit 98cdb6
      visual->type         = GDK_VISUAL_TRUE_COLOR;
Packit 98cdb6
      visual->red_mask     = 0x00007C00;
Packit 98cdb6
      visual->green_mask   = 0x000003E0;
Packit 98cdb6
      visual->blue_mask    = 0x0000001F;
Packit 98cdb6
      visual->bits_per_rgb = 5;
Packit 98cdb6
      break;
Packit 98cdb6
Packit 98cdb6
    case DSPF_RGB16:
Packit 98cdb6
      visual->type         = GDK_VISUAL_TRUE_COLOR;
Packit 98cdb6
      visual->red_mask     = 0x0000F800;
Packit 98cdb6
      visual->green_mask   = 0x000007E0;
Packit 98cdb6
      visual->blue_mask    = 0x0000001F;
Packit 98cdb6
      visual->bits_per_rgb = 6;
Packit 98cdb6
      break;
Packit 98cdb6
Packit 98cdb6
    case DSPF_RGB24:
Packit 98cdb6
    case DSPF_RGB32:
Packit 98cdb6
    case DSPF_ARGB:
Packit 98cdb6
      visual->type         = GDK_VISUAL_TRUE_COLOR;
Packit 98cdb6
      visual->red_mask     = 0x00FF0000;
Packit 98cdb6
      visual->green_mask   = 0x0000FF00;
Packit 98cdb6
      visual->blue_mask    = 0x000000FF;
Packit 98cdb6
      visual->bits_per_rgb = 8;
Packit 98cdb6
      break;
Packit 98cdb6
Packit 98cdb6
    default:
Packit 98cdb6
      g_assert_not_reached ();
Packit 98cdb6
    }
Packit 98cdb6
Packit 98cdb6
#if G_BYTE_ORDER == G_BIG_ENDIAN
Packit 98cdb6
  visual->byte_order = GDK_MSB_FIRST;
Packit 98cdb6
#else
Packit 98cdb6
  visual->byte_order = GDK_LSB_FIRST;
Packit 98cdb6
#endif
Packit 98cdb6
Packit 98cdb6
  visual->depth      = DFB_BITS_PER_PIXEL (pixelformat);
Packit 98cdb6
Packit 98cdb6
  switch (visual->type)
Packit 98cdb6
    {
Packit 98cdb6
    case GDK_VISUAL_TRUE_COLOR:
Packit 98cdb6
      gdk_visual_decompose_mask (visual->red_mask,
Packit 98cdb6
                                 &visual->red_shift, &visual->red_prec);
Packit 98cdb6
      gdk_visual_decompose_mask (visual->green_mask,
Packit 98cdb6
                                 &visual->green_shift, &visual->green_prec);
Packit 98cdb6
      gdk_visual_decompose_mask (visual->blue_mask,
Packit 98cdb6
                                 &visual->blue_shift, &visual->blue_prec);
Packit 98cdb6
Packit 98cdb6
      /* the number of possible levels per color component */
Packit 98cdb6
      visual->colormap_size = 1 << MAX (visual->red_prec,
Packit 98cdb6
                                        MAX (visual->green_prec,
Packit 98cdb6
                                             visual->blue_prec));
Packit 98cdb6
      break;
Packit 98cdb6
Packit 98cdb6
    case GDK_VISUAL_STATIC_COLOR:
Packit 98cdb6
    case GDK_VISUAL_PSEUDO_COLOR:
Packit 98cdb6
      visual->colormap_size = 1 << visual->depth;
Packit 98cdb6
Packit 98cdb6
      visual->red_mask    = 0;
Packit 98cdb6
      visual->red_shift   = 0;
Packit 98cdb6
      visual->red_prec    = 0;
Packit 98cdb6
Packit 98cdb6
      visual->green_mask  = 0;
Packit 98cdb6
      visual->green_shift = 0;
Packit 98cdb6
      visual->green_prec  = 0;
Packit 98cdb6
Packit 98cdb6
      visual->blue_mask   = 0;
Packit 98cdb6
      visual->blue_shift  = 0;
Packit 98cdb6
      visual->blue_prec   = 0;
Packit 98cdb6
Packit 98cdb6
      break;
Packit 98cdb6
Packit 98cdb6
    default:
Packit 98cdb6
      g_assert_not_reached ();
Packit 98cdb6
    }
Packit 98cdb6
Packit 98cdb6
  ((GdkVisualDirectFB *)visual)->format = pixelformat;
Packit 98cdb6
Packit 98cdb6
  for (i = 0; available_depths[i]; i++)
Packit 98cdb6
    if (available_depths[i] == visual->depth)
Packit 98cdb6
      break;
Packit 98cdb6
  if (!available_depths[i])
Packit 98cdb6
    available_depths[i] = visual->depth;
Packit 98cdb6
Packit 98cdb6
  for (i = 0; available_types[i]; i++)
Packit 98cdb6
    if (available_types[i] == visual->type)
Packit 98cdb6
      break;
Packit 98cdb6
  if (!available_types[i])
Packit 98cdb6
    available_types[i] = visual->type;
Packit 98cdb6
Packit 98cdb6
  return (GdkVisualDirectFB *) visual;
Packit 98cdb6
}
Packit 98cdb6
Packit 98cdb6
#define __GDK_VISUAL_X11_C__
Packit 98cdb6
#include "gdkaliasdef.c"