Looking at gdk_display_get_screen(), it returns NULL if there are no screens defined:
GdkScreen * gdk_display_get_screen (GdkDisplay *display, gint screen_num) { g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL); g_return_val_if_fail (ScreenCount (GDK_DISPLAY_X11 (display)->xdisplay) > screen_num, NULL);
return GDK_DISPLAY_X11 (display)->screens[screen_num]; }
However, I'm not sure why it's doing so in this case...
(gdb) print ((GdkDisplayX11*)display)->xdisplay->nscreens $45 = 1 (gdb) print screen_num $46 = 0 (gdb) print ((GdkDisplayX11*)display)->xdisplay->screens[0] $47 = {ext_data = 0x0, display = 0x9c7610, root = 92, width = 1280, height = 1024, mwidth = 382, mheight = 302, ndepths = 7, depths = 0x9ce250, root_depth = 24, root_visual = 0x9ce2d0, default_gc = 0x9ce350, cmap = 32, white_pixel = 16777215, black_pixel = 0, max_maps = 1, min_maps = 1, backing_store = 0, save_unders = 0, root_input_mask = 0}
Looking at gdk_display_ get_screen( ), it returns NULL if there are no screens defined:
GdkScreen * get_screen (GdkDisplay *display,
gint screen_num) val_if_ fail (GDK_IS_DISPLAY (display), NULL); val_if_ fail (ScreenCount (GDK_DISPLAY_X11 (display) ->xdisplay) > screen_num, NULL);
gdk_display_
{
g_return_
g_return_
return GDK_DISPLAY_X11 (display) ->screens[ screen_ num];
}
However, I'm not sure why it's doing so in this case...
(gdb) print ((GdkDisplayX11 *)display) ->xdisplay- >nscreens *)display) ->xdisplay- >screens[ 0]
$45 = 1
(gdb) print screen_num
$46 = 0
(gdb) print ((GdkDisplayX11
$47 = {ext_data = 0x0, display = 0x9c7610, root = 92, width = 1280, height = 1024, mwidth = 382, mheight = 302, ndepths = 7,
depths = 0x9ce250, root_depth = 24, root_visual = 0x9ce2d0, default_gc = 0x9ce350, cmap = 32, white_pixel = 16777215,
black_pixel = 0, max_maps = 1, min_maps = 1, backing_store = 0, save_unders = 0, root_input_mask = 0}