They are unused, only work on the default display anyway and visuals are on their way out.
102 lines
2.6 KiB
C
102 lines
2.6 KiB
C
#include <gdk/gdk.h>
|
|
|
|
/* We don't technically guarantee that the visual returned by
|
|
* gdk_screen_get_rgba_visual is ARGB8888. But if it isn't, lots
|
|
* of code will break, so test this here anyway.
|
|
* The main point of this test is to ensure that the pixel_details
|
|
* functions return meaningful values for TrueColor visuals.
|
|
*/
|
|
static void
|
|
test_rgba_visual (void)
|
|
{
|
|
GdkScreen *screen;
|
|
GdkVisual *visual;
|
|
guint32 r_mask, g_mask, b_mask;
|
|
gint r_shift, g_shift, b_shift;
|
|
gint r_precision, g_precision, b_precision;
|
|
gint depth;
|
|
GdkVisualType type;
|
|
|
|
g_test_bug ("764210");
|
|
|
|
screen = gdk_screen_get_default ();
|
|
visual = gdk_screen_get_rgba_visual (screen);
|
|
|
|
if (visual == NULL)
|
|
{
|
|
g_test_skip ("no rgba visual");
|
|
return;
|
|
}
|
|
|
|
depth = gdk_visual_get_depth (visual);
|
|
type = gdk_visual_get_visual_type (visual);
|
|
gdk_visual_get_red_pixel_details (visual, &r_mask, &r_shift, &r_precision);
|
|
gdk_visual_get_green_pixel_details (visual, &g_mask, &g_shift, &g_precision);
|
|
gdk_visual_get_blue_pixel_details (visual, &b_mask, &b_shift, &b_precision);
|
|
|
|
g_assert_cmpint (depth, ==, 32);
|
|
g_assert_cmpint (type, ==, GDK_VISUAL_TRUE_COLOR);
|
|
|
|
g_assert_cmphex (r_mask, ==, 0x00ff0000);
|
|
g_assert_cmphex (g_mask, ==, 0x0000ff00);
|
|
g_assert_cmphex (b_mask, ==, 0x000000ff);
|
|
|
|
g_assert_cmpint (r_shift, ==, 16);
|
|
g_assert_cmpint (g_shift, ==, 8);
|
|
g_assert_cmpint (b_shift, ==, 0);
|
|
|
|
g_assert_cmpint (r_precision, ==, 8);
|
|
g_assert_cmpint (g_precision, ==, 8);
|
|
g_assert_cmpint (b_precision, ==, 8);
|
|
}
|
|
|
|
static void
|
|
test_list_visuals (void)
|
|
{
|
|
GdkScreen *screen;
|
|
GdkVisual *visual;
|
|
GdkVisual *rgba_visual;
|
|
GdkVisual *system_visual;
|
|
GList *list, *l;
|
|
gboolean found_system, found_rgba;
|
|
|
|
screen = gdk_screen_get_default ();
|
|
system_visual = gdk_screen_get_system_visual (screen);
|
|
rgba_visual = gdk_screen_get_rgba_visual (screen);
|
|
|
|
found_system = FALSE;
|
|
found_rgba = FALSE;
|
|
|
|
list = gdk_screen_list_visuals (screen);
|
|
for (l = list; l; l = l->next)
|
|
{
|
|
visual = l->data;
|
|
if (visual == system_visual)
|
|
found_system = TRUE;
|
|
if (visual == rgba_visual)
|
|
found_rgba = TRUE;
|
|
g_assert_true (GDK_IS_VISUAL (visual));
|
|
|
|
g_assert_true (gdk_visual_get_screen (visual) == screen);
|
|
}
|
|
g_list_free (list);
|
|
|
|
g_assert (system_visual != NULL && found_system);
|
|
g_assert (rgba_visual == NULL || found_rgba);
|
|
}
|
|
|
|
int
|
|
main (int argc, char *argv[])
|
|
{
|
|
g_test_init (&argc, &argv, NULL);
|
|
|
|
gdk_init (NULL, NULL);
|
|
|
|
g_test_bug_base ("http://bugzilla.gnome.org/");
|
|
|
|
g_test_add_func ("/visual/list", test_list_visuals);
|
|
g_test_add_func ("/visual/rgba", test_rgba_visual);
|
|
|
|
return g_test_run ();
|
|
}
|