Move GdkVisual parallel-implementable
It turned out no vfuncs were necessary. I've decided to move the screen member up to GdkVisual, since it is the same in all backends. The X11 backend subclasses now, to add the X members that it needs to keep track of. GdkVisual and GdkVisualClass are hidden now.
This commit is contained in:
@ -466,6 +466,36 @@ struct _GdkDragContext {
|
|||||||
GdkDevice *device;
|
GdkDevice *device;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct _GdkVisual
|
||||||
|
{
|
||||||
|
GObject parent_instance;
|
||||||
|
|
||||||
|
GdkVisualType type;
|
||||||
|
gint depth;
|
||||||
|
GdkByteOrder byte_order;
|
||||||
|
gint colormap_size;
|
||||||
|
gint bits_per_rgb;
|
||||||
|
|
||||||
|
guint32 red_mask;
|
||||||
|
gint red_shift;
|
||||||
|
gint red_prec;
|
||||||
|
|
||||||
|
guint32 green_mask;
|
||||||
|
gint green_shift;
|
||||||
|
gint green_prec;
|
||||||
|
|
||||||
|
guint32 blue_mask;
|
||||||
|
gint blue_shift;
|
||||||
|
gint blue_prec;
|
||||||
|
|
||||||
|
GdkScreen *screen;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _GdkVisualClass
|
||||||
|
{
|
||||||
|
GObjectClass parent_class;
|
||||||
|
};
|
||||||
|
|
||||||
extern GSList *_gdk_displays;
|
extern GSList *_gdk_displays;
|
||||||
extern gchar *_gdk_display_name;
|
extern gchar *_gdk_display_name;
|
||||||
extern gint _gdk_screen_number;
|
extern gint _gdk_screen_number;
|
||||||
|
@ -25,7 +25,6 @@
|
|||||||
|
|
||||||
#include "gdkinternals.h"
|
#include "gdkinternals.h"
|
||||||
#include "gdkvisual.h"
|
#include "gdkvisual.h"
|
||||||
|
|
||||||
#include "gdkscreen.h"
|
#include "gdkscreen.h"
|
||||||
|
|
||||||
|
|
||||||
@ -55,6 +54,26 @@
|
|||||||
* then %GDK_VISUAL_STATIC_GRAY.
|
* then %GDK_VISUAL_STATIC_GRAY.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
G_DEFINE_TYPE (GdkVisual, gdk_visual, G_TYPE_OBJECT)
|
||||||
|
|
||||||
|
static void
|
||||||
|
gdk_visual_init (GdkVisual *visual)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gdk_visual_finalize (GObject *object)
|
||||||
|
{
|
||||||
|
G_OBJECT_CLASS (gdk_visual_parent_class)->finalize (object);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gdk_visual_class_init (GdkVisualClass *visual_class)
|
||||||
|
{
|
||||||
|
GObjectClass *object_class = G_OBJECT_CLASS (visual_class);
|
||||||
|
|
||||||
|
object_class->finalize = gdk_visual_finalize;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gdk_list_visuals:
|
* gdk_list_visuals:
|
||||||
@ -428,3 +447,21 @@ gdk_visual_get_blue_pixel_details (GdkVisual *visual,
|
|||||||
if (precision)
|
if (precision)
|
||||||
*precision = visual->blue_prec;
|
*precision = visual->blue_prec;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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->screen;
|
||||||
|
}
|
||||||
|
@ -42,7 +42,6 @@ G_BEGIN_DECLS
|
|||||||
#define GDK_IS_VISUAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_VISUAL))
|
#define GDK_IS_VISUAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_VISUAL))
|
||||||
#define GDK_VISUAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_VISUAL, GdkVisualClass))
|
#define GDK_VISUAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_VISUAL, GdkVisualClass))
|
||||||
|
|
||||||
typedef struct _GdkVisualPrivate GdkVisualPrivate;
|
|
||||||
typedef struct _GdkVisualClass GdkVisualClass;
|
typedef struct _GdkVisualClass GdkVisualClass;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -84,53 +83,7 @@ typedef enum
|
|||||||
*
|
*
|
||||||
* The #GdkVisual structure contains information about
|
* The #GdkVisual structure contains information about
|
||||||
* a particular visual.
|
* a particular visual.
|
||||||
*
|
|
||||||
* <example id="rgbmask">
|
|
||||||
* <title>Constructing a pixel value from components</title>
|
|
||||||
* <programlisting>
|
|
||||||
* guint
|
|
||||||
* pixel_from_rgb (GdkVisual *visual,
|
|
||||||
* guchar r, guchar b, guchar g)
|
|
||||||
* {
|
|
||||||
* return ((r >> (16 - visual->red_prec)) << visual->red_shift) |
|
|
||||||
* ((g >> (16 - visual->green_prec)) << visual->green_shift) |
|
|
||||||
* ((r >> (16 - visual->blue_prec)) << visual->blue_shift);
|
|
||||||
* }
|
|
||||||
* </programlisting>
|
|
||||||
* </example>
|
|
||||||
*/
|
*/
|
||||||
struct _GdkVisual
|
|
||||||
{
|
|
||||||
/*< private >*/
|
|
||||||
GObject parent_instance;
|
|
||||||
|
|
||||||
GdkVisualType GSEAL (type); /* Type of visual this is (PseudoColor, TrueColor, etc) */
|
|
||||||
gint GSEAL (depth); /* Bit depth of this visual */
|
|
||||||
GdkByteOrder GSEAL (byte_order);
|
|
||||||
gint GSEAL (colormap_size); /* Size of a colormap for this visual */
|
|
||||||
gint GSEAL (bits_per_rgb); /* Number of significant bits per red, green and blue. */
|
|
||||||
|
|
||||||
/* The red, green and blue masks, shifts and precisions refer
|
|
||||||
* to value needed to calculate pixel values in TrueColor and DirectColor
|
|
||||||
* visuals. The "mask" is the significant bits within the pixel. The
|
|
||||||
* "shift" is the number of bits left we must shift a primary for it
|
|
||||||
* to be in position (according to the "mask"). "prec" refers to how
|
|
||||||
* much precision the pixel value contains for a particular primary.
|
|
||||||
*/
|
|
||||||
guint32 GSEAL (red_mask);
|
|
||||||
gint GSEAL (red_shift);
|
|
||||||
gint GSEAL (red_prec);
|
|
||||||
|
|
||||||
guint32 GSEAL (green_mask);
|
|
||||||
gint GSEAL (green_shift);
|
|
||||||
gint GSEAL (green_prec);
|
|
||||||
|
|
||||||
guint32 GSEAL (blue_mask);
|
|
||||||
gint GSEAL (blue_shift);
|
|
||||||
gint GSEAL (blue_prec);
|
|
||||||
|
|
||||||
GdkVisualPrivate *priv;
|
|
||||||
};
|
|
||||||
|
|
||||||
GType gdk_visual_get_type (void) G_GNUC_CONST;
|
GType gdk_visual_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
@ -152,7 +105,7 @@ void gdk_query_visual_types (GdkVisualType **visual_types,
|
|||||||
GList* gdk_list_visuals (void);
|
GList* gdk_list_visuals (void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
GdkScreen *gdk_visual_get_screen (GdkVisual *visual);
|
GdkScreen *gdk_visual_get_screen (GdkVisual *visual);
|
||||||
|
|
||||||
GdkVisualType gdk_visual_get_visual_type (GdkVisual *visual);
|
GdkVisualType gdk_visual_get_visual_type (GdkVisual *visual);
|
||||||
gint gdk_visual_get_depth (GdkVisual *visual);
|
gint gdk_visual_get_depth (GdkVisual *visual);
|
||||||
|
@ -148,7 +148,7 @@ void _gdk_screen_x11_events_init (GdkScreen *screen);
|
|||||||
void _gdk_events_init (GdkDisplay *display);
|
void _gdk_events_init (GdkDisplay *display);
|
||||||
void _gdk_events_uninit (GdkDisplay *display);
|
void _gdk_events_uninit (GdkDisplay *display);
|
||||||
void _gdk_windowing_window_init (GdkScreen *screen);
|
void _gdk_windowing_window_init (GdkScreen *screen);
|
||||||
void _gdk_visual_init (GdkScreen *screen);
|
void _gdk_x11_visual_init (GdkScreen *screen);
|
||||||
void _gdk_x11_dnd_init (GdkDisplay *display);
|
void _gdk_x11_dnd_init (GdkDisplay *display);
|
||||||
|
|
||||||
void _gdk_x11_cursor_update_theme (GdkCursor *cursor);
|
void _gdk_x11_cursor_update_theme (GdkCursor *cursor);
|
||||||
|
@ -810,7 +810,7 @@ _gdk_x11_screen_new (GdkDisplay *display,
|
|||||||
init_multihead (screen);
|
init_multihead (screen);
|
||||||
init_randr_support (screen);
|
init_randr_support (screen);
|
||||||
|
|
||||||
_gdk_visual_init (screen);
|
_gdk_x11_visual_init (screen);
|
||||||
_gdk_windowing_window_init (screen);
|
_gdk_windowing_window_init (screen);
|
||||||
|
|
||||||
return screen;
|
return screen;
|
||||||
|
@ -36,16 +36,18 @@
|
|||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
#include <X11/Xutil.h>
|
#include <X11/Xutil.h>
|
||||||
|
|
||||||
struct _GdkVisualPrivate
|
typedef struct _GdkVisualX11 GdkVisualX11;
|
||||||
{
|
typedef struct _GdkVisualClass GdkVisualX11Class;
|
||||||
Visual *xvisual;
|
|
||||||
GdkScreen *screen;
|
|
||||||
Colormap colormap;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _GdkVisualClass
|
#define GDK_TYPE_VISUAL_X11 (gdk_visual_x11_get_type ())
|
||||||
|
#define GDK_VISUAL_X11(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_VISUAL_X11, GdkVisualX11))
|
||||||
|
|
||||||
|
struct _GdkVisualX11
|
||||||
{
|
{
|
||||||
GObjectClass parent_class;
|
GdkVisual visual;
|
||||||
|
|
||||||
|
Visual *xvisual;
|
||||||
|
Colormap colormap;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void gdk_visual_add (GdkVisual *visual);
|
static void gdk_visual_add (GdkVisual *visual);
|
||||||
@ -71,42 +73,36 @@ static const gchar *const visual_names[] =
|
|||||||
|
|
||||||
#endif /* G_ENABLE_DEBUG */
|
#endif /* G_ENABLE_DEBUG */
|
||||||
|
|
||||||
G_DEFINE_TYPE (GdkVisual, gdk_visual, G_TYPE_OBJECT)
|
G_DEFINE_TYPE (GdkVisualX11, gdk_visual_x11, GDK_TYPE_VISUAL)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gdk_visual_finalize (GObject *object)
|
gdk_visual_x11_init (GdkVisualX11 *visual_x11)
|
||||||
{
|
{
|
||||||
GdkVisualPrivate *priv = (GdkVisualPrivate *) object;
|
visual_x11->colormap = None;
|
||||||
|
|
||||||
if (priv->colormap != None)
|
|
||||||
XFreeColormap (GDK_SCREEN_XDISPLAY (priv->screen),
|
|
||||||
priv->colormap);
|
|
||||||
|
|
||||||
G_OBJECT_CLASS (gdk_visual_parent_class)->finalize (object);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gdk_visual_class_init (GdkVisualClass *visual_class)
|
gdk_visual_x11_finalize (GObject *object)
|
||||||
{
|
{
|
||||||
GObjectClass *object_class = G_OBJECT_CLASS (visual_class);
|
GdkVisual *visual = (GdkVisual *)object;
|
||||||
|
GdkVisualX11 *visual_x11 = (GdkVisualX11 *)object;
|
||||||
|
|
||||||
g_type_class_add_private (object_class, sizeof (GdkVisualPrivate));
|
if (visual_x11->colormap != None)
|
||||||
|
XFreeColormap (GDK_SCREEN_XDISPLAY (visual->screen), visual_x11->colormap);
|
||||||
|
|
||||||
object_class->finalize = gdk_visual_finalize;
|
G_OBJECT_CLASS (gdk_visual_x11_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gdk_visual_init (GdkVisual *visual)
|
gdk_visual_x11_class_init (GdkVisualX11Class *class)
|
||||||
{
|
{
|
||||||
visual->priv = G_TYPE_INSTANCE_GET_PRIVATE (visual,
|
GObjectClass *object_class = G_OBJECT_CLASS (class);
|
||||||
GDK_TYPE_VISUAL,
|
|
||||||
GdkVisualPrivate);
|
|
||||||
|
|
||||||
visual->priv->colormap = None;
|
object_class->finalize = gdk_visual_x11_finalize;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_gdk_visual_init (GdkScreen *screen)
|
_gdk_x11_visual_init (GdkScreen *screen)
|
||||||
{
|
{
|
||||||
static const gint possible_depths[8] = { 32, 30, 24, 16, 15, 8, 4, 1 };
|
static const gint possible_depths[8] = { 32, 30, 24, 16, 15, 8, 4, 1 };
|
||||||
static const GdkVisualType possible_types[6] =
|
static const GdkVisualType possible_types[6] =
|
||||||
@ -138,14 +134,14 @@ _gdk_visual_init (GdkScreen *screen)
|
|||||||
|
|
||||||
visuals = g_new (GdkVisual *, nxvisuals);
|
visuals = g_new (GdkVisual *, nxvisuals);
|
||||||
for (i = 0; i < nxvisuals; i++)
|
for (i = 0; i < nxvisuals; i++)
|
||||||
visuals[i] = g_object_new (GDK_TYPE_VISUAL, NULL);
|
visuals[i] = g_object_new (GDK_TYPE_VISUAL_X11, NULL);
|
||||||
|
|
||||||
default_xvisual = DefaultVisual (screen_x11->xdisplay, screen_x11->screen_num);
|
default_xvisual = DefaultVisual (screen_x11->xdisplay, screen_x11->screen_num);
|
||||||
|
|
||||||
nvisuals = 0;
|
nvisuals = 0;
|
||||||
for (i = 0; i < nxvisuals; i++)
|
for (i = 0; i < nxvisuals; i++)
|
||||||
{
|
{
|
||||||
visuals[nvisuals]->priv->screen = screen;
|
visuals[nvisuals]->screen = screen;
|
||||||
|
|
||||||
if (visual_list[i].depth >= 1)
|
if (visual_list[i].depth >= 1)
|
||||||
{
|
{
|
||||||
@ -184,7 +180,7 @@ _gdk_visual_init (GdkScreen *screen)
|
|||||||
visuals[nvisuals]->blue_mask = visual_list[i].blue_mask;
|
visuals[nvisuals]->blue_mask = visual_list[i].blue_mask;
|
||||||
visuals[nvisuals]->colormap_size = visual_list[i].colormap_size;
|
visuals[nvisuals]->colormap_size = visual_list[i].colormap_size;
|
||||||
visuals[nvisuals]->bits_per_rgb = visual_list[i].bits_per_rgb;
|
visuals[nvisuals]->bits_per_rgb = visual_list[i].bits_per_rgb;
|
||||||
visuals[nvisuals]->priv->xvisual = visual_list[i].visual;
|
GDK_VISUAL_X11 (visuals[nvisuals])->xvisual = visual_list[i].visual;
|
||||||
|
|
||||||
if ((visuals[nvisuals]->type == GDK_VISUAL_TRUE_COLOR) ||
|
if ((visuals[nvisuals]->type == GDK_VISUAL_TRUE_COLOR) ||
|
||||||
(visuals[nvisuals]->type == GDK_VISUAL_DIRECT_COLOR))
|
(visuals[nvisuals]->type == GDK_VISUAL_DIRECT_COLOR))
|
||||||
@ -259,11 +255,11 @@ _gdk_visual_init (GdkScreen *screen)
|
|||||||
|
|
||||||
for (i = 0; i < nvisuals; i++)
|
for (i = 0; i < nvisuals; i++)
|
||||||
{
|
{
|
||||||
if (default_xvisual->visualid == visuals[i]->priv->xvisual->visualid)
|
if (default_xvisual->visualid == GDK_VISUAL_X11 (visuals[i])->xvisual->visualid)
|
||||||
{
|
{
|
||||||
screen_x11->system_visual = visuals[i];
|
screen_x11->system_visual = visuals[i];
|
||||||
visuals[i]->priv->colormap = DefaultColormap (screen_x11->xdisplay,
|
GDK_VISUAL_X11 (visuals[i])->colormap =
|
||||||
screen_x11->screen_num);
|
DefaultColormap (screen_x11->xdisplay, screen_x11->screen_num);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* For now, we only support 8888 ARGB for the "rgba visual".
|
/* For now, we only support 8888 ARGB for the "rgba visual".
|
||||||
@ -275,8 +271,8 @@ _gdk_visual_init (GdkScreen *screen)
|
|||||||
visuals[i]->green_mask == 0x00ff00 &&
|
visuals[i]->green_mask == 0x00ff00 &&
|
||||||
visuals[i]->blue_mask == 0x0000ff))
|
visuals[i]->blue_mask == 0x0000ff))
|
||||||
{
|
{
|
||||||
screen_x11->rgba_visual = GDK_VISUAL (visuals[i]);
|
screen_x11->rgba_visual = visuals[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef G_ENABLE_DEBUG
|
#ifdef G_ENABLE_DEBUG
|
||||||
@ -293,9 +289,7 @@ _gdk_visual_init (GdkScreen *screen)
|
|||||||
};
|
};
|
||||||
|
|
||||||
for (i = 0; i < nvisuals; i++)
|
for (i = 0; i < nvisuals; i++)
|
||||||
g_message ("visual: %s: %d",
|
g_message ("visual: %s: %d", visual_names[visuals[i]->type], visuals[i]->depth);
|
||||||
visual_names[visuals[i]->type],
|
|
||||||
visuals[i]->depth);
|
|
||||||
}
|
}
|
||||||
#endif /* G_ENABLE_DEBUG */
|
#endif /* G_ENABLE_DEBUG */
|
||||||
|
|
||||||
@ -329,7 +323,7 @@ _gdk_visual_init (GdkScreen *screen)
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < nvisuals; i++)
|
for (i = 0; i < nvisuals; i++)
|
||||||
gdk_visual_add ((GdkVisual*) visuals[i]);
|
gdk_visual_add (visuals[i]);
|
||||||
|
|
||||||
if (screen_x11->navailable_types == 0)
|
if (screen_x11->navailable_types == 0)
|
||||||
g_error ("unable to find a usable visual type");
|
g_error ("unable to find a usable visual type");
|
||||||
@ -351,7 +345,7 @@ _gdk_screen_x11_visual_get_best_type (GdkScreen *screen)
|
|||||||
}
|
}
|
||||||
|
|
||||||
GdkVisual *
|
GdkVisual *
|
||||||
_gdk_screen_x11_get_system_visual (GdkScreen * screen)
|
_gdk_screen_x11_get_system_visual (GdkScreen *screen)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
|
g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
|
||||||
|
|
||||||
@ -363,12 +357,12 @@ _gdk_screen_x11_visual_get_best (GdkScreen *screen)
|
|||||||
{
|
{
|
||||||
GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen);
|
GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen);
|
||||||
|
|
||||||
return (GdkVisual *)screen_x11->visuals[0];
|
return screen_x11->visuals[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
GdkVisual*
|
GdkVisual*
|
||||||
_gdk_screen_x11_visual_get_best_with_depth (GdkScreen *screen,
|
_gdk_screen_x11_visual_get_best_with_depth (GdkScreen *screen,
|
||||||
gint depth)
|
gint depth)
|
||||||
{
|
{
|
||||||
GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen);
|
GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen);
|
||||||
GdkVisual *return_val;
|
GdkVisual *return_val;
|
||||||
@ -378,7 +372,7 @@ _gdk_screen_x11_visual_get_best_with_depth (GdkScreen *screen,
|
|||||||
for (i = 0; i < screen_x11->nvisuals; i++)
|
for (i = 0; i < screen_x11->nvisuals; i++)
|
||||||
if (depth == screen_x11->visuals[i]->depth)
|
if (depth == screen_x11->visuals[i]->depth)
|
||||||
{
|
{
|
||||||
return_val = (GdkVisual *) screen_x11->visuals[i];
|
return_val = screen_x11->visuals[i];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -386,8 +380,8 @@ _gdk_screen_x11_visual_get_best_with_depth (GdkScreen *screen,
|
|||||||
}
|
}
|
||||||
|
|
||||||
GdkVisual*
|
GdkVisual*
|
||||||
_gdk_screen_x11_visual_get_best_with_type (GdkScreen *screen,
|
_gdk_screen_x11_visual_get_best_with_type (GdkScreen *screen,
|
||||||
GdkVisualType visual_type)
|
GdkVisualType visual_type)
|
||||||
{
|
{
|
||||||
GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen);
|
GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen);
|
||||||
GdkVisual *return_val;
|
GdkVisual *return_val;
|
||||||
@ -397,7 +391,7 @@ _gdk_screen_x11_visual_get_best_with_type (GdkScreen *screen,
|
|||||||
for (i = 0; i < screen_x11->nvisuals; i++)
|
for (i = 0; i < screen_x11->nvisuals; i++)
|
||||||
if (visual_type == screen_x11->visuals[i]->type)
|
if (visual_type == screen_x11->visuals[i]->type)
|
||||||
{
|
{
|
||||||
return_val = (GdkVisual *) screen_x11->visuals[i];
|
return_val = screen_x11->visuals[i];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -405,9 +399,9 @@ _gdk_screen_x11_visual_get_best_with_type (GdkScreen *screen,
|
|||||||
}
|
}
|
||||||
|
|
||||||
GdkVisual*
|
GdkVisual*
|
||||||
_gdk_screen_x11_visual_get_best_with_both (GdkScreen *screen,
|
_gdk_screen_x11_visual_get_best_with_both (GdkScreen *screen,
|
||||||
gint depth,
|
gint depth,
|
||||||
GdkVisualType visual_type)
|
GdkVisualType visual_type)
|
||||||
{
|
{
|
||||||
GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen);
|
GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen);
|
||||||
GdkVisual *return_val;
|
GdkVisual *return_val;
|
||||||
@ -418,7 +412,7 @@ _gdk_screen_x11_visual_get_best_with_both (GdkScreen *screen,
|
|||||||
if ((depth == screen_x11->visuals[i]->depth) &&
|
if ((depth == screen_x11->visuals[i]->depth) &&
|
||||||
(visual_type == screen_x11->visuals[i]->type))
|
(visual_type == screen_x11->visuals[i]->type))
|
||||||
{
|
{
|
||||||
return_val = (GdkVisual *) screen_x11->visuals[i];
|
return_val = screen_x11->visuals[i];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -426,9 +420,9 @@ _gdk_screen_x11_visual_get_best_with_both (GdkScreen *screen,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_gdk_screen_x11_query_depths (GdkScreen *screen,
|
_gdk_screen_x11_query_depths (GdkScreen *screen,
|
||||||
gint **depths,
|
gint **depths,
|
||||||
gint *count)
|
gint *count)
|
||||||
{
|
{
|
||||||
GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen);
|
GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen);
|
||||||
|
|
||||||
@ -437,9 +431,9 @@ _gdk_screen_x11_query_depths (GdkScreen *screen,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_gdk_screen_x11_query_visual_types (GdkScreen *screen,
|
_gdk_screen_x11_query_visual_types (GdkScreen *screen,
|
||||||
GdkVisualType **visual_types,
|
GdkVisualType **visual_types,
|
||||||
gint *count)
|
gint *count)
|
||||||
{
|
{
|
||||||
GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen);
|
GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen);
|
||||||
|
|
||||||
@ -479,7 +473,7 @@ _gdk_screen_x11_list_visuals (GdkScreen *screen)
|
|||||||
*/
|
*/
|
||||||
GdkVisual *
|
GdkVisual *
|
||||||
gdk_x11_screen_lookup_visual (GdkScreen *screen,
|
gdk_x11_screen_lookup_visual (GdkScreen *screen,
|
||||||
VisualID xvisualid)
|
VisualID xvisualid)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
GdkScreenX11 *screen_x11;
|
GdkScreenX11 *screen_x11;
|
||||||
@ -487,8 +481,8 @@ gdk_x11_screen_lookup_visual (GdkScreen *screen,
|
|||||||
screen_x11 = GDK_SCREEN_X11 (screen);
|
screen_x11 = GDK_SCREEN_X11 (screen);
|
||||||
|
|
||||||
for (i = 0; i < screen_x11->nvisuals; i++)
|
for (i = 0; i < screen_x11->nvisuals; i++)
|
||||||
if (xvisualid == screen_x11->visuals[i]->priv->xvisual->visualid)
|
if (xvisualid == GDK_VISUAL_X11 (screen_x11->visuals[i])->xvisual->visualid)
|
||||||
return (GdkVisual *) screen_x11->visuals[i];
|
return screen_x11->visuals[i];
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -510,19 +504,19 @@ gdkx_visual_get (VisualID xvisualid)
|
|||||||
static void
|
static void
|
||||||
gdk_visual_add (GdkVisual *visual)
|
gdk_visual_add (GdkVisual *visual)
|
||||||
{
|
{
|
||||||
GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (visual->priv->screen);
|
GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (visual->screen);
|
||||||
|
|
||||||
if (!screen_x11->visual_hash)
|
if (!screen_x11->visual_hash)
|
||||||
screen_x11->visual_hash = g_hash_table_new ((GHashFunc) gdk_visual_hash,
|
screen_x11->visual_hash = g_hash_table_new ((GHashFunc) gdk_visual_hash,
|
||||||
(GEqualFunc) gdk_visual_equal);
|
(GEqualFunc) gdk_visual_equal);
|
||||||
|
|
||||||
g_hash_table_insert (screen_x11->visual_hash, visual->priv->xvisual, visual);
|
g_hash_table_insert (screen_x11->visual_hash, GDK_VISUAL_X11 (visual)->xvisual, visual);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gdk_visual_decompose_mask (gulong mask,
|
gdk_visual_decompose_mask (gulong mask,
|
||||||
gint *shift,
|
gint *shift,
|
||||||
gint *prec)
|
gint *prec)
|
||||||
{
|
{
|
||||||
*shift = 0;
|
*shift = 0;
|
||||||
*prec = 0;
|
*prec = 0;
|
||||||
@ -554,7 +548,7 @@ gdk_visual_hash (Visual *key)
|
|||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gdk_visual_equal (Visual *a,
|
gdk_visual_equal (Visual *a,
|
||||||
Visual *b)
|
Visual *b)
|
||||||
{
|
{
|
||||||
return (a->visualid == b->visualid);
|
return (a->visualid == b->visualid);
|
||||||
}
|
}
|
||||||
@ -570,21 +564,21 @@ gdk_visual_equal (Visual *a,
|
|||||||
Colormap
|
Colormap
|
||||||
_gdk_visual_get_x11_colormap (GdkVisual *visual)
|
_gdk_visual_get_x11_colormap (GdkVisual *visual)
|
||||||
{
|
{
|
||||||
GdkVisualPrivate *priv;
|
GdkVisualX11 *visual_x11;
|
||||||
|
|
||||||
g_return_val_if_fail (GDK_IS_VISUAL (visual), None);
|
g_return_val_if_fail (GDK_IS_VISUAL (visual), None);
|
||||||
|
|
||||||
priv = visual->priv;
|
visual_x11 = GDK_VISUAL_X11 (visual);
|
||||||
|
|
||||||
if (priv->colormap == None)
|
if (visual_x11->colormap == None)
|
||||||
{
|
{
|
||||||
priv->colormap = XCreateColormap (GDK_SCREEN_XDISPLAY (priv->screen),
|
visual_x11->colormap = XCreateColormap (GDK_SCREEN_XDISPLAY (visual->screen),
|
||||||
GDK_SCREEN_XROOTWIN (priv->screen),
|
GDK_SCREEN_XROOTWIN (visual->screen),
|
||||||
GDK_VISUAL_XVISUAL (visual),
|
visual_x11->xvisual,
|
||||||
AllocNone);
|
AllocNone);
|
||||||
}
|
}
|
||||||
|
|
||||||
return priv->colormap;
|
return visual_x11->colormap;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -597,26 +591,8 @@ _gdk_visual_get_x11_colormap (GdkVisual *visual)
|
|||||||
**/
|
**/
|
||||||
Visual *
|
Visual *
|
||||||
gdk_x11_visual_get_xvisual (GdkVisual *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);
|
g_return_val_if_fail (GDK_IS_VISUAL (visual), NULL);
|
||||||
|
|
||||||
return visual->priv->screen;
|
return GDK_VISUAL_X11 (visual)->xvisual;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user