1997-11-24 22:37:52 +00:00
|
|
|
|
/* GDK - The GIMP Drawing Kit
|
|
|
|
|
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
|
|
|
|
*
|
|
|
|
|
* This library is free software; you can redistribute it and/or
|
2000-07-26 11:33:08 +00:00
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
1997-11-24 22:37:52 +00:00
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
|
* version 2 of the License, or (at your option) any later version.
|
|
|
|
|
*
|
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
2000-07-26 11:33:08 +00:00
|
|
|
|
* Lesser General Public License for more details.
|
1997-11-24 22:37:52 +00:00
|
|
|
|
*
|
2000-07-26 11:33:08 +00:00
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
2012-02-27 13:01:10 +00:00
|
|
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
1997-11-24 22:37:52 +00:00
|
|
|
|
*/
|
1999-02-24 07:37:18 +00:00
|
|
|
|
|
|
|
|
|
/*
|
2000-07-26 11:33:08 +00:00
|
|
|
|
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
|
1999-02-24 07:37:18 +00:00
|
|
|
|
* 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/.
|
|
|
|
|
*/
|
|
|
|
|
|
2008-06-22 14:28:52 +00:00
|
|
|
|
#include "config.h"
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
1999-11-08 20:14:59 +00:00
|
|
|
|
#include "gdkprivate-x11.h"
|
2002-04-25 22:29:14 +00:00
|
|
|
|
#include "gdkscreen-x11.h"
|
2017-11-01 02:44:15 +00:00
|
|
|
|
#include "gdkvisual-x11.h"
|
2010-07-09 00:34:45 +00:00
|
|
|
|
|
2010-10-15 02:05:51 +00:00
|
|
|
|
#include <X11/Xlib.h>
|
|
|
|
|
#include <X11/Xutil.h>
|
|
|
|
|
|
2010-12-21 01:13:40 +00:00
|
|
|
|
struct _GdkX11VisualClass
|
2010-12-21 01:09:30 +00:00
|
|
|
|
{
|
2017-11-01 02:44:15 +00:00
|
|
|
|
GObjectClass parent_class;
|
2010-12-21 01:09:30 +00:00
|
|
|
|
};
|
|
|
|
|
|
2017-11-01 02:44:15 +00:00
|
|
|
|
G_DEFINE_TYPE (GdkX11Visual, gdk_x11_visual, G_TYPE_OBJECT)
|
2010-08-29 14:40:48 +00:00
|
|
|
|
|
2010-08-29 15:48:58 +00:00
|
|
|
|
static void
|
2010-12-21 01:13:40 +00:00
|
|
|
|
gdk_x11_visual_init (GdkX11Visual *x11_visual)
|
2010-08-29 15:48:58 +00:00
|
|
|
|
{
|
2013-06-29 23:22:51 +00:00
|
|
|
|
}
|
|
|
|
|
|
2010-08-29 14:40:48 +00:00
|
|
|
|
static void
|
2010-12-21 01:13:40 +00:00
|
|
|
|
gdk_x11_visual_class_init (GdkX11VisualClass *class)
|
2010-08-29 14:40:48 +00:00
|
|
|
|
{
|
|
|
|
|
}
|
2001-06-30 02:56:50 +00:00
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
|
void
|
2017-11-17 15:18:20 +00:00
|
|
|
|
_gdk_x11_screen_init_visuals (GdkX11Screen *screen,
|
|
|
|
|
gboolean setup_display)
|
1997-11-24 22:37:52 +00:00
|
|
|
|
{
|
2009-03-31 23:31:28 +00:00
|
|
|
|
static const gint possible_depths[8] = { 32, 30, 24, 16, 15, 8, 4, 1 };
|
1998-11-30 19:07:15 +00:00
|
|
|
|
static const GdkVisualType possible_types[6] =
|
1997-11-24 22:37:52 +00:00
|
|
|
|
{
|
|
|
|
|
GDK_VISUAL_DIRECT_COLOR,
|
|
|
|
|
GDK_VISUAL_TRUE_COLOR,
|
|
|
|
|
GDK_VISUAL_PSEUDO_COLOR,
|
|
|
|
|
GDK_VISUAL_STATIC_COLOR,
|
|
|
|
|
GDK_VISUAL_GRAYSCALE,
|
|
|
|
|
GDK_VISUAL_STATIC_GRAY
|
|
|
|
|
};
|
|
|
|
|
|
2010-12-21 01:32:13 +00:00
|
|
|
|
GdkX11Screen *x11_screen;
|
1997-11-24 22:37:52 +00:00
|
|
|
|
XVisualInfo *visual_list;
|
|
|
|
|
XVisualInfo visual_template;
|
2017-11-01 02:44:15 +00:00
|
|
|
|
GdkX11Visual *temp_visual;
|
1997-11-24 22:37:52 +00:00
|
|
|
|
Visual *default_xvisual;
|
2017-11-01 02:44:15 +00:00
|
|
|
|
GdkX11Visual **visuals;
|
1997-11-24 22:37:52 +00:00
|
|
|
|
int nxvisuals;
|
2002-04-25 22:29:14 +00:00
|
|
|
|
int nvisuals;
|
1997-11-24 22:37:52 +00:00
|
|
|
|
int i, j;
|
2010-12-10 14:06:52 +00:00
|
|
|
|
|
2002-04-25 22:29:14 +00:00
|
|
|
|
g_return_if_fail (GDK_IS_SCREEN (screen));
|
2010-12-21 01:32:13 +00:00
|
|
|
|
x11_screen = GDK_X11_SCREEN (screen);
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
2007-03-17 18:51:35 +00:00
|
|
|
|
nxvisuals = 0;
|
2010-12-21 01:32:13 +00:00
|
|
|
|
visual_template.screen = x11_screen->screen_num;
|
|
|
|
|
visual_list = XGetVisualInfo (x11_screen->xdisplay, VisualScreenMask, &visual_template, &nxvisuals);
|
2010-12-10 14:06:52 +00:00
|
|
|
|
|
2017-11-01 02:44:15 +00:00
|
|
|
|
visuals = g_new (GdkX11Visual *, nxvisuals);
|
2001-06-30 02:56:50 +00:00
|
|
|
|
for (i = 0; i < nxvisuals; i++)
|
2010-12-21 01:13:40 +00:00
|
|
|
|
visuals[i] = g_object_new (GDK_TYPE_X11_VISUAL, NULL);
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
2010-12-21 01:32:13 +00:00
|
|
|
|
default_xvisual = DefaultVisual (x11_screen->xdisplay, x11_screen->screen_num);
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
|
|
|
|
nvisuals = 0;
|
|
|
|
|
for (i = 0; i < nxvisuals; i++)
|
|
|
|
|
{
|
1997-12-20 08:39:21 +00:00
|
|
|
|
if (visual_list[i].depth >= 1)
|
1997-11-24 22:37:52 +00:00
|
|
|
|
{
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
switch (visual_list[i].c_class)
|
|
|
|
|
#else /* __cplusplus */
|
|
|
|
|
switch (visual_list[i].class)
|
|
|
|
|
#endif /* __cplusplus */
|
|
|
|
|
{
|
|
|
|
|
case StaticGray:
|
2010-08-29 14:40:48 +00:00
|
|
|
|
visuals[nvisuals]->type = GDK_VISUAL_STATIC_GRAY;
|
1997-11-24 22:37:52 +00:00
|
|
|
|
break;
|
|
|
|
|
case GrayScale:
|
2010-08-29 14:40:48 +00:00
|
|
|
|
visuals[nvisuals]->type = GDK_VISUAL_GRAYSCALE;
|
1997-11-24 22:37:52 +00:00
|
|
|
|
break;
|
|
|
|
|
case StaticColor:
|
2010-08-29 14:40:48 +00:00
|
|
|
|
visuals[nvisuals]->type = GDK_VISUAL_STATIC_COLOR;
|
1997-11-24 22:37:52 +00:00
|
|
|
|
break;
|
|
|
|
|
case PseudoColor:
|
2010-08-29 14:40:48 +00:00
|
|
|
|
visuals[nvisuals]->type = GDK_VISUAL_PSEUDO_COLOR;
|
1997-11-24 22:37:52 +00:00
|
|
|
|
break;
|
|
|
|
|
case TrueColor:
|
2010-08-29 14:40:48 +00:00
|
|
|
|
visuals[nvisuals]->type = GDK_VISUAL_TRUE_COLOR;
|
1997-11-24 22:37:52 +00:00
|
|
|
|
break;
|
|
|
|
|
case DirectColor:
|
2010-08-29 14:40:48 +00:00
|
|
|
|
visuals[nvisuals]->type = GDK_VISUAL_DIRECT_COLOR;
|
1997-11-24 22:37:52 +00:00
|
|
|
|
break;
|
2017-10-06 19:19:42 +00:00
|
|
|
|
default:
|
|
|
|
|
g_warn_if_reached ();
|
|
|
|
|
break;
|
1997-11-24 22:37:52 +00:00
|
|
|
|
}
|
|
|
|
|
|
2010-08-29 14:40:48 +00:00
|
|
|
|
visuals[nvisuals]->depth = visual_list[i].depth;
|
|
|
|
|
visuals[nvisuals]->byte_order =
|
2010-12-21 01:32:13 +00:00
|
|
|
|
(ImageByteOrder(x11_screen->xdisplay) == LSBFirst) ?
|
1997-11-24 22:37:52 +00:00
|
|
|
|
GDK_LSB_FIRST : GDK_MSB_FIRST;
|
2010-08-29 14:40:48 +00:00
|
|
|
|
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;
|
2010-12-21 01:13:40 +00:00
|
|
|
|
GDK_X11_VISUAL (visuals[nvisuals])->xvisual = visual_list[i].visual;
|
2010-08-29 14:40:48 +00:00
|
|
|
|
|
2016-02-27 10:43:18 +00:00
|
|
|
|
if ((visuals[nvisuals]->type != GDK_VISUAL_TRUE_COLOR) &&
|
|
|
|
|
(visuals[nvisuals]->type != GDK_VISUAL_DIRECT_COLOR))
|
1997-11-24 22:37:52 +00:00
|
|
|
|
{
|
2010-08-29 14:40:48 +00:00
|
|
|
|
visuals[nvisuals]->red_mask = 0;
|
|
|
|
|
visuals[nvisuals]->green_mask = 0;
|
|
|
|
|
visuals[nvisuals]->blue_mask = 0;
|
1997-11-24 22:37:52 +00:00
|
|
|
|
}
|
2010-12-10 14:06:52 +00:00
|
|
|
|
|
1997-11-24 22:37:52 +00:00
|
|
|
|
nvisuals += 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
1998-07-04 15:31:30 +00:00
|
|
|
|
if (visual_list)
|
|
|
|
|
XFree (visual_list);
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
|
|
|
|
for (i = 0; i < nvisuals; i++)
|
|
|
|
|
{
|
|
|
|
|
for (j = i+1; j < nvisuals; j++)
|
|
|
|
|
{
|
2010-08-29 14:40:48 +00:00
|
|
|
|
if (visuals[j]->depth >= visuals[i]->depth)
|
1997-11-24 22:37:52 +00:00
|
|
|
|
{
|
2010-08-29 14:40:48 +00:00
|
|
|
|
if ((visuals[j]->depth == 8) && (visuals[i]->depth == 8))
|
1997-11-24 22:37:52 +00:00
|
|
|
|
{
|
2010-08-29 14:40:48 +00:00
|
|
|
|
if (visuals[j]->type == GDK_VISUAL_PSEUDO_COLOR)
|
1997-11-24 22:37:52 +00:00
|
|
|
|
{
|
|
|
|
|
temp_visual = visuals[j];
|
|
|
|
|
visuals[j] = visuals[i];
|
|
|
|
|
visuals[i] = temp_visual;
|
|
|
|
|
}
|
2010-08-29 14:40:48 +00:00
|
|
|
|
else if ((visuals[i]->type != GDK_VISUAL_PSEUDO_COLOR) &&
|
|
|
|
|
visuals[j]->type > visuals[i]->type)
|
1997-11-24 22:37:52 +00:00
|
|
|
|
{
|
|
|
|
|
temp_visual = visuals[j];
|
|
|
|
|
visuals[j] = visuals[i];
|
|
|
|
|
visuals[i] = temp_visual;
|
|
|
|
|
}
|
|
|
|
|
}
|
2010-08-29 14:40:48 +00:00
|
|
|
|
else if ((visuals[j]->depth > visuals[i]->depth) ||
|
|
|
|
|
((visuals[j]->depth == visuals[i]->depth) &&
|
|
|
|
|
(visuals[j]->type > visuals[i]->type)))
|
1997-11-24 22:37:52 +00:00
|
|
|
|
{
|
|
|
|
|
temp_visual = visuals[j];
|
|
|
|
|
visuals[j] = visuals[i];
|
|
|
|
|
visuals[i] = temp_visual;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < nvisuals; i++)
|
2005-05-09 22:54:10 +00:00
|
|
|
|
{
|
2010-12-21 01:13:40 +00:00
|
|
|
|
if (default_xvisual->visualid == GDK_X11_VISUAL (visuals[i])->xvisual->visualid)
|
2016-11-03 22:40:54 +00:00
|
|
|
|
x11_screen->system_visual = visuals[i];
|
2005-05-09 22:54:10 +00:00
|
|
|
|
|
|
|
|
|
/* For now, we only support 8888 ARGB for the "rgba visual".
|
|
|
|
|
* Additional formats (like ABGR) could be added later if they
|
|
|
|
|
* turn up.
|
|
|
|
|
*/
|
2014-10-28 17:27:41 +00:00
|
|
|
|
if (x11_screen->rgba_visual == NULL &&
|
|
|
|
|
visuals[i]->depth == 32 &&
|
2010-08-29 14:40:48 +00:00
|
|
|
|
(visuals[i]->red_mask == 0xff0000 &&
|
|
|
|
|
visuals[i]->green_mask == 0x00ff00 &&
|
|
|
|
|
visuals[i]->blue_mask == 0x0000ff))
|
2005-05-09 22:54:10 +00:00
|
|
|
|
{
|
2010-12-21 01:32:13 +00:00
|
|
|
|
x11_screen->rgba_visual = visuals[i];
|
2010-12-10 14:06:52 +00:00
|
|
|
|
}
|
2005-05-09 22:54:10 +00:00
|
|
|
|
}
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
2010-12-10 14:06:52 +00:00
|
|
|
|
#ifdef G_ENABLE_DEBUG
|
2016-02-29 02:29:35 +00:00
|
|
|
|
if (GDK_DEBUG_CHECK (MISC))
|
2010-09-27 15:33:39 +00:00
|
|
|
|
{
|
|
|
|
|
static const gchar *const visual_names[] =
|
|
|
|
|
{
|
|
|
|
|
"static gray",
|
|
|
|
|
"grayscale",
|
|
|
|
|
"static color",
|
|
|
|
|
"pseudo color",
|
|
|
|
|
"true color",
|
|
|
|
|
"direct color",
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < nvisuals; i++)
|
2010-12-10 14:06:52 +00:00
|
|
|
|
g_message ("visual: %s: %d", visual_names[visuals[i]->type], visuals[i]->depth);
|
2010-09-27 15:33:39 +00:00
|
|
|
|
}
|
1998-02-19 18:14:11 +00:00
|
|
|
|
#endif /* G_ENABLE_DEBUG */
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
2010-12-21 01:32:13 +00:00
|
|
|
|
x11_screen->navailable_depths = 0;
|
2002-04-25 22:29:14 +00:00
|
|
|
|
for (i = 0; i < G_N_ELEMENTS (possible_depths); i++)
|
1997-11-24 22:37:52 +00:00
|
|
|
|
{
|
|
|
|
|
for (j = 0; j < nvisuals; j++)
|
|
|
|
|
{
|
2010-08-29 14:40:48 +00:00
|
|
|
|
if (visuals[j]->depth == possible_depths[i])
|
1997-11-24 22:37:52 +00:00
|
|
|
|
{
|
2010-12-21 01:32:13 +00:00
|
|
|
|
x11_screen->available_depths[x11_screen->navailable_depths++] = visuals[j]->depth;
|
1997-11-24 22:37:52 +00:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2010-12-21 01:32:13 +00:00
|
|
|
|
if (x11_screen->navailable_depths == 0)
|
1997-11-24 22:37:52 +00:00
|
|
|
|
g_error ("unable to find a usable depth");
|
|
|
|
|
|
2010-12-21 01:32:13 +00:00
|
|
|
|
x11_screen->navailable_types = 0;
|
2002-04-25 22:29:14 +00:00
|
|
|
|
for (i = 0; i < G_N_ELEMENTS (possible_types); i++)
|
1997-11-24 22:37:52 +00:00
|
|
|
|
{
|
|
|
|
|
for (j = 0; j < nvisuals; j++)
|
|
|
|
|
{
|
2010-08-29 14:40:48 +00:00
|
|
|
|
if (visuals[j]->type == possible_types[i])
|
1997-11-24 22:37:52 +00:00
|
|
|
|
{
|
2010-12-21 01:32:13 +00:00
|
|
|
|
x11_screen->available_types[x11_screen->navailable_types++] = visuals[j]->type;
|
1997-11-24 22:37:52 +00:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2010-12-21 01:32:13 +00:00
|
|
|
|
if (x11_screen->navailable_types == 0)
|
1997-11-24 22:37:52 +00:00
|
|
|
|
g_error ("unable to find a usable visual type");
|
2002-04-25 22:29:14 +00:00
|
|
|
|
|
2010-12-21 01:32:13 +00:00
|
|
|
|
x11_screen->visuals = visuals;
|
|
|
|
|
x11_screen->nvisuals = nvisuals;
|
2014-10-29 11:35:07 +00:00
|
|
|
|
|
|
|
|
|
/* If GL is available we want to pick better default/rgba visuals,
|
|
|
|
|
as we care about glx details such as alpha/depth/stencil depth,
|
|
|
|
|
stereo and double buffering */
|
2017-11-17 15:18:20 +00:00
|
|
|
|
_gdk_x11_screen_update_visuals_for_gl (x11_screen);
|
2016-11-03 22:40:54 +00:00
|
|
|
|
|
|
|
|
|
if (setup_display)
|
|
|
|
|
{
|
|
|
|
|
if (x11_screen->rgba_visual)
|
|
|
|
|
{
|
|
|
|
|
Visual *xvisual = GDK_X11_VISUAL (x11_screen->rgba_visual)->xvisual;
|
|
|
|
|
Colormap colormap;
|
|
|
|
|
|
|
|
|
|
colormap = XCreateColormap (x11_screen->xdisplay,
|
|
|
|
|
RootWindow (x11_screen->xdisplay, x11_screen->screen_num),
|
|
|
|
|
xvisual,
|
|
|
|
|
AllocNone);
|
2017-11-01 23:41:45 +00:00
|
|
|
|
gdk_display_setup_window_visual (GDK_SCREEN_DISPLAY (screen),
|
2016-11-03 22:40:54 +00:00
|
|
|
|
x11_screen->rgba_visual->depth,
|
|
|
|
|
GDK_X11_VISUAL (x11_screen->rgba_visual)->xvisual,
|
|
|
|
|
colormap,
|
|
|
|
|
TRUE);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2017-11-01 23:41:45 +00:00
|
|
|
|
gdk_display_setup_window_visual (GDK_SCREEN_DISPLAY (screen),
|
2016-11-03 22:40:54 +00:00
|
|
|
|
DefaultDepth (x11_screen->xdisplay, x11_screen->screen_num),
|
|
|
|
|
DefaultVisual (x11_screen->xdisplay, x11_screen->screen_num),
|
|
|
|
|
DefaultColormap (x11_screen->xdisplay, x11_screen->screen_num),
|
|
|
|
|
FALSE);
|
|
|
|
|
}
|
|
|
|
|
}
|
1997-11-24 22:37:52 +00:00
|
|
|
|
}
|
|
|
|
|
|
2002-04-25 22:29:14 +00:00
|
|
|
|
/**
|
2002-11-28 00:33:17 +00:00
|
|
|
|
* gdk_x11_screen_lookup_visual:
|
2011-07-28 11:27:23 +00:00
|
|
|
|
* @screen: (type GdkX11Screen): a #GdkScreen.
|
2002-04-25 22:29:14 +00:00
|
|
|
|
* @xvisualid: an X Visual ID.
|
|
|
|
|
*
|
2002-09-24 21:54:15 +00:00
|
|
|
|
* Looks up the #GdkVisual for a particular screen and X Visual ID.
|
2002-04-25 22:29:14 +00:00
|
|
|
|
*
|
2014-01-09 20:47:04 +00:00
|
|
|
|
* Returns: (transfer none) (type GdkX11Visual): the #GdkVisual (owned by the screen
|
2014-02-07 18:32:47 +00:00
|
|
|
|
* object), or %NULL if the visual ID wasn’t found.
|
2002-11-28 00:33:17 +00:00
|
|
|
|
*
|
|
|
|
|
* Since: 2.2
|
2002-04-25 22:29:14 +00:00
|
|
|
|
*/
|
2017-11-01 02:44:15 +00:00
|
|
|
|
GdkX11Visual *
|
2002-09-24 21:54:15 +00:00
|
|
|
|
gdk_x11_screen_lookup_visual (GdkScreen *screen,
|
2010-12-10 14:06:52 +00:00
|
|
|
|
VisualID xvisualid)
|
1997-11-24 22:37:52 +00:00
|
|
|
|
{
|
|
|
|
|
int i;
|
2010-12-21 01:32:13 +00:00
|
|
|
|
GdkX11Screen *x11_screen;
|
2002-04-25 22:29:14 +00:00
|
|
|
|
g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
|
2010-12-21 01:32:13 +00:00
|
|
|
|
x11_screen = GDK_X11_SCREEN (screen);
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
2010-12-21 01:32:13 +00:00
|
|
|
|
for (i = 0; i < x11_screen->nvisuals; i++)
|
|
|
|
|
if (xvisualid == GDK_X11_VISUAL (x11_screen->visuals[i])->xvisual->visualid)
|
|
|
|
|
return x11_screen->visuals[i];
|
1997-11-24 22:37:52 +00:00
|
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
2002-10-22 22:11:22 +00:00
|
|
|
|
/**
|
2011-07-28 11:17:35 +00:00
|
|
|
|
* gdk_x11_visual_get_xvisual:
|
2014-01-09 20:47:04 +00:00
|
|
|
|
* @visual: (type GdkX11Visual): a #GdkVisual.
|
2010-12-10 14:06:52 +00:00
|
|
|
|
*
|
2002-10-22 22:11:22 +00:00
|
|
|
|
* Returns the X visual belonging to a #GdkVisual.
|
2010-12-10 14:06:52 +00:00
|
|
|
|
*
|
2014-02-19 23:49:43 +00:00
|
|
|
|
* Returns: (transfer none): an Xlib Visual*.
|
2002-10-22 22:11:22 +00:00
|
|
|
|
**/
|
Make gdkx.h the only installed header from gdk/x11. All structures in
Fri Sep 7 11:51:44 2001 Owen Taylor <otaylor@redhat.com>
Make gdkx.h the only installed header from gdk/x11.
All structures in gdk/x11 are opaque.
* gdk/x11/Makefile.am gdk/x11/gdkx.h gdk/x11/gdkprivate-x11.h:
Don't install gdk{drawable,pixmap,window}-x11.h.
* gdk/x11/{gdkcolormap-x11.c, gdkfont-x11.c, gdkx.h, gdkvisual-x11.c:
Move GdkColormapPrivateX11, GdkFontPrivateX GdkImagePrivateX11,
GdkVisualClass into C files.
* gdk/gdkpixmap-x11.[ch]: Make gdk_pixmap_impl_get_type() static.
* gdk/x11/{gdkcolor-x11.c, gdkcursor-x11.c, gdkdrawable-x11.c,
gdkfont-x11.c, gdkgc-x11.c, gdkx.h, gdkimage-x11,gdkvisual-x11.c}
Add public functions to replace previously exported direct
structure access.
gdk_x11_colormap_get_{xdisplay,xcolormap}
gdk_x11_cursor_get_{xdisplay,xcursor},
gdk_x11_drawable_get_{xdisplay,xcursor,gdk_x11_visual_get_xvisual,
gdk_x11_font_get_{xdisplay,xfont}, gdk_x11_image_get_{xdisplay,ximage},
gdk_x11_gc_get_{xdisplay,ximage}
* gdk/gdkprivate.h gdk/gdkinternals.h: Move GdkColorInfo,
GdkEventFilter, GdkClientFilter, GdkFontPrivate to gdkinternals.
Fix a number of variables and functions that were exported
"accidentally" from GDK.
* gdk/**.[ch]: gdk => _gdk for gdk_visual_init,
gdk_events_init, gdk_input_init, gdk_dnd_init, gdk_image_exit,
gdk_input_exit, gdk_windowing_exit, gdk_event_func, gdk_event_data,
gdk_event_notify, gdk_queued_events, gdk_queued_tail,
gdk_event_new, gdk_events_queue, gdk_events_unqueue,
gdk_event_queue_find_first, gdk_event_queue_remove_link,
gdk_event_queue_append, gdk_event_button_generate,
gdk_debug_flags, gdk_default_filters, gdk_parent_root.
* gdk/x11/{gdkevents-x11.c, gdkglobals-x11.c, gdkimage-x11.c,
gdkmain-x11.c, gdkprivate-x11.h, gdk/x11/gdkwindow-x11.c}:
gdk => _gdk for gdk_event_mask_table, gkd_nevent_masks,
gdk_wm_window_protocols, gdk_leader_window, gdk_xgrab_window,
gdk_use_xshm, gdk_input_ignore_core.
* gdk/x11/xsettings-common.h (xsettings_list_insert): Add
#defines to namespace functions into the private _gdk_
namespace.
* gdk/gdkwindow.[ch] gdk/x11/gdkx.h: Add gdk_get_default_root_window ()
to replace gdk_parent_root exported variable. Adjust and
deprecate GDK_ROOT_PARENT().
* demos/{testpixbuf-drawable.c,testpixbuf-save.c}: Fix
GDK_ROOT_PARENT usage, remove includes of port-specific
headers.
* gdk/{win32,x11,fb}/gdkinput*.[ch]: s/gdk/_gdk/ for
_gdk_input_gxid_host, _gdk_input_gxid_port, _gdk_input_ignore_core,
gdk_input_devices, _gdk_input_windows, gdk_init_input_core.
* gdk/x11/{gdkevents-x11.,c gdkglobals-x11.c, gdkmain-x11.c}
docs/Changes-2.0.txt: Remove gdk_wm_protocols,
gdk_wm_delete_window functions, gdk_wm_take_focus,
use gdk_atom_intern() instead.
* gdk/linux-fb/{gdkselection-fb.c, gdkmain-fb.c, gdkprivatefb.h}
gdk/win32/{gdkselection-win32.c, gdkmgdkwin32.h, gdkprivate-win32.h}
gdk/x11/{gdkselection-x11.c gdkx.h, gtkprivate-x11.h}
gtk/gtkselection.c
Unexport gdk_selection_property, just use
gdk_atom_intern ("GDK_SELECTION").
* gdk/x11/{gdkprivate-x11.h,gdkdrawable-x11h,gdkgc-x11.c,gdkx.h}:
Unexport gdk_drawable_impl_x11_get_type, gdk_gc_x11_get_type,
GDK_GC_X11 cast macros, GdkGCX11 structures, GdkCursorPrivate,
GdkVisualprivate, gdk_x11_gc_flush.
Make a number of public exports of variables into functions
to increase encapsulation.
* gdk/gdkinternals.h gdk/gdkinput.h gdk/gdkevents.h
gdk/linux-fb/gdkmouse-fb.c: gdk_core_pointer => _gdk_core_pointer,
move to gdkinternals.h. Add gdk_device_get_core_pointer ().
* gdk/gdkprivate.h gdk/gdkpango.c gdk/gdkinternals.h
docs/Changes-2.0.txt: Unexport gdk_parent_root, gdk_error_code,
gdk_error_warnings.
* gdk/x11/{gdkcolormap-x11.c, gdkmain-x11.c, gdkx.h}
docs/Changes-2.0.txt:
s/gdk_screen/_gdk_screen/, add gdk_x11_get_default_screen()
s/gdk_root_window/_gdk_root_window/, add gdk_x11_get_default_root_xwindow()
Add gdk_x11_get_default_xdisplay().
* gdk/gdk.h gdk/gdk.c linux-fb/gdkfb.h linux-fb/gdkglobals-fb.c
win32/gdkwin32.h x11/gdkglobals-x11.c gdk/x11/gdkmain-x11.c
gdk/x11/gdkx.h: gdk/gdk.def: Add gdk_get/set_program_class,
Don't export gdk_progclass, move --class command line
option and handling to common portion of GDK.
Miscellaneous fixes:
* gdk/x11/gdkwindow-x11.c (gdk_window_set_icon_list): Fix
g_return_val_if_fail that should have been g_return_if_fail.
* gdk/gdkinternals.h gdk/gdkprivate.h: Move
gdk_synthesize_window_state() to the semi-public gdkprivate.h.
* gtk/gtkdnd.c (_gtk_drag_source_handle_event): Remove uneeded
X11 dependency.
* gdk/linux-fb/gdkmain-fb.c gdk/win32/gdkmain-win32.c gdk/TODO:
Remove unused gdk_key_repeat_disable/restore.
* linux-fb/gdkglobals-fb.c win32/gdkglobals-win32.c
x11/gdkglobals-x11.c x11/gdkprivate-x11.h gdk/gdk.def:
Remove unused gdk_null_window_warnings variable.
* gdk/Makefile.am (DIST_SUBDIRS) nanox/*: cvs remove nanox;
it can be retrieved from the repository; it is too far
from functional to be worth having people check out;
it would be easier to start from scratch, I suspect.
* gdk/x11/gdkpixmap-x11.c: Fix lvalue usage of GDK_PIXMAP_XID().
* gdk/x11/gdkkeys-x11.c gdk/gdkrgb.c gdk/gdkwindow.c
gdk/x11/gdkpango-x11.c gdk/x11/gdkselection-x11.c:
Fix some accidentally global variables and unused global variables.
* gdk/x11/gdkkeys-x11.c gdk/gdkrgb.c gdk/gdkwindow.c
gdk/x11/gdkpango-x11.c gdk/x11/gdkselection-x11.c:
Fix some accidentally global variables and unused global variables.
Add some space for future expansion to multihead.
* gdk/gdkdrawable.h: Add four reserved function pointers
for future expansion of GdkDrawableClass.
* gtk/gtkwindow.h gtk/gtkinvisible.h: Add reserved pointer
where we can put a GdkScreen * later.
2001-09-07 21:50:20 +00:00
|
|
|
|
Visual *
|
2017-11-01 02:44:15 +00:00
|
|
|
|
gdk_x11_visual_get_xvisual (GdkX11Visual *visual)
|
Changes multihead reorganizing code for win32 support, mostly from a patch
Wed Jun 5 18:34:47 2002 Owen Taylor <otaylor@redhat.com>
Changes multihead reorganizing code for win32 support,
mostly from a patch by Hans Breuer.
* gdk/gdkcolor.c gdk/x11/gdkcolor-x11.c gdk/gdkcursor.c
gdk/x11/gdkcursor-x11.c gdk/gdkevents.c gdk/x11/gdkevents-x11.c
gdk/gdkfont.c gdk/x11/gdkfont-x11.c gdk/gdkkeys.c
gdk/x11/gdkkeys-x11.c gdk/gdkimage.c gdk/x11/gdkimage-x11.c
gdk/gdkscreen.c gdk/x11/gdkmain-x11.c
gdk/gdkdisplay.c gdk/gdkevents-x11.c gdk/gdkpango.c
gdk/x11/gdkpango-x11.c gdk/gdkselection.c
gdk/x11/gdkselection-x11.c gdk/gdkwindow.c
gdk/x11/gdkwindow-x11.c gdk/gdkvisual.c gdk/x11/gdkvisual-x11.c:
Move port-independent singlehead wrapper functions into
port-independent part of GDK. (#80009)
* gdk/win32/gdkcolor-win32.c gdk/win32/gdkcursor-win32.c
gdk/win32/gdkevents-win32.c gdk/win32/gdkfont-win32.c
gdk/win32/gdkimage-win32.c gdk/win32/gdkkeys-win32.c
gdk/win32/gdkmain-win32.c gdk/win32/gdkproperty-win32.c
gdk/win32/gdkselection-win32.c gdk/win32/gkwindow-win32.c:
Turn singlehead functions into "multihead" functions that ignore
their GdkDisplay or GdkScreen arguments.
* gdk/win32/gdkdrawable-win32.c gdk/win32/gdkevents-win32.c
gdk/win32/gdkinput-win32.c gdk/win32/gdkprivate-win32.h:
Misc multihead-compatibility changes.
* gtk/gtk.def gdk/gdk.def: Update for multihead functions.
* gdk/gdkcolormap.h gdk/gdkvisual.h gdk/x11/gdkcolormap-x11.c
gdk/x11/gdkvisual-x11.c: Remove the screen fields
from the public parts of the colormap/visual structures, add accessors
instead.
* gdk/gdkpixbuf-render.c gdk/gdkpixmap.c gdk/gdkrgb.c
gdk/x11/gdkcolormap-x11.c gdk/x11/gdkimage-x11.c
gdk/x11/gdkimage-x11.c gdk/x11/gdkprivate-x11.h gtk/gtkgc.c
gtk/gtkstyle.c gtk/gtkwidget.c: Use accessors to get the screen
for colormaps, visuals; move the fields into the private
structures for the x11 backend.
* gdk/gdkdisplay.[ch] gdk/x11/gdkdisplay-x11.[ch]
gdk/gdkscreen.[ch] gdk/x11/gdkscreen-x11.c:
Remove virtualization of screen and display functions.
(#79990, patch from Erwann Chenede)
* gdk/win32/gdkdisplay-x11.c gdk/win32/gdkscreen-win32.c
gdk/win32/{Makefile.am, makefile.msc, makefile.mingw}:
New files containing stub implementations of Display,
Screen functions.
* gdk/x11/gdkscreen-x11.[ch] gdk/x11/gdkdisplay-x11.[ch]
gdk/x11/gdkx.h: Clean up function exports and what
headers they are in. (#79954)
* gdk/x11/gdkx.h: Fix macro that was referring to a non-existant
screen->screen_num. (In the patch for #79972, Erwann Chenede)
* gdk/gdkscreen.c gdk/gdkwindow.c gdk/x11/gdkinternals.h
gdk/x11/gdkscreen-x11.c: Fix gdk_screen_get_window_at_pointer()
to use window hooks. (#79972, patch partly from Erwann Chenede)
* gdk/x11/gdkdisplay-x11.c gdk/x11/gdkevents-x11.c: Fix
some warnings.
2002-06-06 00:26:42 +00:00
|
|
|
|
{
|
2017-11-01 02:44:15 +00:00
|
|
|
|
g_return_val_if_fail (GDK_IS_X11_VISUAL (visual), NULL);
|
Changes multihead reorganizing code for win32 support, mostly from a patch
Wed Jun 5 18:34:47 2002 Owen Taylor <otaylor@redhat.com>
Changes multihead reorganizing code for win32 support,
mostly from a patch by Hans Breuer.
* gdk/gdkcolor.c gdk/x11/gdkcolor-x11.c gdk/gdkcursor.c
gdk/x11/gdkcursor-x11.c gdk/gdkevents.c gdk/x11/gdkevents-x11.c
gdk/gdkfont.c gdk/x11/gdkfont-x11.c gdk/gdkkeys.c
gdk/x11/gdkkeys-x11.c gdk/gdkimage.c gdk/x11/gdkimage-x11.c
gdk/gdkscreen.c gdk/x11/gdkmain-x11.c
gdk/gdkdisplay.c gdk/gdkevents-x11.c gdk/gdkpango.c
gdk/x11/gdkpango-x11.c gdk/gdkselection.c
gdk/x11/gdkselection-x11.c gdk/gdkwindow.c
gdk/x11/gdkwindow-x11.c gdk/gdkvisual.c gdk/x11/gdkvisual-x11.c:
Move port-independent singlehead wrapper functions into
port-independent part of GDK. (#80009)
* gdk/win32/gdkcolor-win32.c gdk/win32/gdkcursor-win32.c
gdk/win32/gdkevents-win32.c gdk/win32/gdkfont-win32.c
gdk/win32/gdkimage-win32.c gdk/win32/gdkkeys-win32.c
gdk/win32/gdkmain-win32.c gdk/win32/gdkproperty-win32.c
gdk/win32/gdkselection-win32.c gdk/win32/gkwindow-win32.c:
Turn singlehead functions into "multihead" functions that ignore
their GdkDisplay or GdkScreen arguments.
* gdk/win32/gdkdrawable-win32.c gdk/win32/gdkevents-win32.c
gdk/win32/gdkinput-win32.c gdk/win32/gdkprivate-win32.h:
Misc multihead-compatibility changes.
* gtk/gtk.def gdk/gdk.def: Update for multihead functions.
* gdk/gdkcolormap.h gdk/gdkvisual.h gdk/x11/gdkcolormap-x11.c
gdk/x11/gdkvisual-x11.c: Remove the screen fields
from the public parts of the colormap/visual structures, add accessors
instead.
* gdk/gdkpixbuf-render.c gdk/gdkpixmap.c gdk/gdkrgb.c
gdk/x11/gdkcolormap-x11.c gdk/x11/gdkimage-x11.c
gdk/x11/gdkimage-x11.c gdk/x11/gdkprivate-x11.h gtk/gtkgc.c
gtk/gtkstyle.c gtk/gtkwidget.c: Use accessors to get the screen
for colormaps, visuals; move the fields into the private
structures for the x11 backend.
* gdk/gdkdisplay.[ch] gdk/x11/gdkdisplay-x11.[ch]
gdk/gdkscreen.[ch] gdk/x11/gdkscreen-x11.c:
Remove virtualization of screen and display functions.
(#79990, patch from Erwann Chenede)
* gdk/win32/gdkdisplay-x11.c gdk/win32/gdkscreen-win32.c
gdk/win32/{Makefile.am, makefile.msc, makefile.mingw}:
New files containing stub implementations of Display,
Screen functions.
* gdk/x11/gdkscreen-x11.[ch] gdk/x11/gdkdisplay-x11.[ch]
gdk/x11/gdkx.h: Clean up function exports and what
headers they are in. (#79954)
* gdk/x11/gdkx.h: Fix macro that was referring to a non-existant
screen->screen_num. (In the patch for #79972, Erwann Chenede)
* gdk/gdkscreen.c gdk/gdkwindow.c gdk/x11/gdkinternals.h
gdk/x11/gdkscreen-x11.c: Fix gdk_screen_get_window_at_pointer()
to use window hooks. (#79972, patch partly from Erwann Chenede)
* gdk/x11/gdkdisplay-x11.c gdk/x11/gdkevents-x11.c: Fix
some warnings.
2002-06-06 00:26:42 +00:00
|
|
|
|
|
2010-12-21 01:13:40 +00:00
|
|
|
|
return GDK_X11_VISUAL (visual)->xvisual;
|
Changes multihead reorganizing code for win32 support, mostly from a patch
Wed Jun 5 18:34:47 2002 Owen Taylor <otaylor@redhat.com>
Changes multihead reorganizing code for win32 support,
mostly from a patch by Hans Breuer.
* gdk/gdkcolor.c gdk/x11/gdkcolor-x11.c gdk/gdkcursor.c
gdk/x11/gdkcursor-x11.c gdk/gdkevents.c gdk/x11/gdkevents-x11.c
gdk/gdkfont.c gdk/x11/gdkfont-x11.c gdk/gdkkeys.c
gdk/x11/gdkkeys-x11.c gdk/gdkimage.c gdk/x11/gdkimage-x11.c
gdk/gdkscreen.c gdk/x11/gdkmain-x11.c
gdk/gdkdisplay.c gdk/gdkevents-x11.c gdk/gdkpango.c
gdk/x11/gdkpango-x11.c gdk/gdkselection.c
gdk/x11/gdkselection-x11.c gdk/gdkwindow.c
gdk/x11/gdkwindow-x11.c gdk/gdkvisual.c gdk/x11/gdkvisual-x11.c:
Move port-independent singlehead wrapper functions into
port-independent part of GDK. (#80009)
* gdk/win32/gdkcolor-win32.c gdk/win32/gdkcursor-win32.c
gdk/win32/gdkevents-win32.c gdk/win32/gdkfont-win32.c
gdk/win32/gdkimage-win32.c gdk/win32/gdkkeys-win32.c
gdk/win32/gdkmain-win32.c gdk/win32/gdkproperty-win32.c
gdk/win32/gdkselection-win32.c gdk/win32/gkwindow-win32.c:
Turn singlehead functions into "multihead" functions that ignore
their GdkDisplay or GdkScreen arguments.
* gdk/win32/gdkdrawable-win32.c gdk/win32/gdkevents-win32.c
gdk/win32/gdkinput-win32.c gdk/win32/gdkprivate-win32.h:
Misc multihead-compatibility changes.
* gtk/gtk.def gdk/gdk.def: Update for multihead functions.
* gdk/gdkcolormap.h gdk/gdkvisual.h gdk/x11/gdkcolormap-x11.c
gdk/x11/gdkvisual-x11.c: Remove the screen fields
from the public parts of the colormap/visual structures, add accessors
instead.
* gdk/gdkpixbuf-render.c gdk/gdkpixmap.c gdk/gdkrgb.c
gdk/x11/gdkcolormap-x11.c gdk/x11/gdkimage-x11.c
gdk/x11/gdkimage-x11.c gdk/x11/gdkprivate-x11.h gtk/gtkgc.c
gtk/gtkstyle.c gtk/gtkwidget.c: Use accessors to get the screen
for colormaps, visuals; move the fields into the private
structures for the x11 backend.
* gdk/gdkdisplay.[ch] gdk/x11/gdkdisplay-x11.[ch]
gdk/gdkscreen.[ch] gdk/x11/gdkscreen-x11.c:
Remove virtualization of screen and display functions.
(#79990, patch from Erwann Chenede)
* gdk/win32/gdkdisplay-x11.c gdk/win32/gdkscreen-win32.c
gdk/win32/{Makefile.am, makefile.msc, makefile.mingw}:
New files containing stub implementations of Display,
Screen functions.
* gdk/x11/gdkscreen-x11.[ch] gdk/x11/gdkdisplay-x11.[ch]
gdk/x11/gdkx.h: Clean up function exports and what
headers they are in. (#79954)
* gdk/x11/gdkx.h: Fix macro that was referring to a non-existant
screen->screen_num. (In the patch for #79972, Erwann Chenede)
* gdk/gdkscreen.c gdk/gdkwindow.c gdk/x11/gdkinternals.h
gdk/x11/gdkscreen-x11.c: Fix gdk_screen_get_window_at_pointer()
to use window hooks. (#79972, patch partly from Erwann Chenede)
* gdk/x11/gdkdisplay-x11.c gdk/x11/gdkevents-x11.c: Fix
some warnings.
2002-06-06 00:26:42 +00:00
|
|
|
|
}
|