GdkScreen * _gdk_x11_screen_new (GdkDisplay *display, gint screen_number) { GdkScreen *screen; GdkX11Screen *x11_screen; GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); screen = g_object_new (GDK_TYPE_X11_SCREEN, NULL); x11_screen = GDK_X11_SCREEN (screen); x11_screen->display = display; x11_screen->xdisplay = display_x11->xdisplay; x11_screen->xscreen = ScreenOfDisplay (display_x11->xdisplay, screen_number); x11_screen->screen_num = screen_number; x11_screen->xroot_window = RootWindow (display_x11->xdisplay,screen_number); x11_screen->wmspec_check_window = None; /* we want this to be always non-null */ x11_screen->window_manager_name = g_strdup ("unknown"); init_multihead (screen); init_randr_support (screen); _gdk_x11_screen_init_visuals (screen); _gdk_x11_screen_init_root_window (screen); return screen; }
static void process_monitors_change (GdkScreen *screen) { GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen); gint n_monitors; gint primary_monitor; GdkX11Monitor *monitors; gboolean changed; primary_monitor = x11_screen->primary_monitor; n_monitors = x11_screen->n_monitors; monitors = x11_screen->monitors; x11_screen->n_monitors = 0; x11_screen->monitors = NULL; init_multihead (screen); changed = !compare_monitors (monitors, n_monitors, x11_screen->monitors, x11_screen->n_monitors) || x11_screen->primary_monitor != primary_monitor; free_monitors (monitors, n_monitors); if (changed) g_signal_emit_by_name (screen, "monitors-changed"); }
GdkScreen * _gdk_windowing_window_init (GdkDisplay *display, GdkScreen *screen) { //GdkScreen *screen; GdkScreenGix *screen_gix; GdkDisplayGix *display_gix; display_gix = GDK_DISPLAY_GIX (display); g_assert(display_gix != NULL); //screen = g_object_new (GDK_TYPE_SCREEN_GIX, NULL); screen_gix = GDK_SCREEN_GIX (screen); //screen_gix->scr_display = display; screen_gix->width = gi_screen_width(); screen_gix->height = gi_screen_height(); screen_gix->xroot_window = GI_DESKTOP_WINDOW_ID; screen_gix->root_window = _gdk_gix_screen_create_root_window (screen, screen_gix->width, screen_gix->height); init_multihead (screen); g_print("_gdk_gix_screen_create_root_window = %p %p\n", screen_gix->root_window,screen_gix->root_window->visual); return screen; }
static void process_monitors_change (GdkScreen *screen) { if (init_multihead (screen)) { update_bounding_box (screen); g_signal_emit_by_name (screen, "monitors-changed"); } }
GdkScreen * _gdk_x11_screen_new (GdkDisplay *display, gint screen_number) { GdkScreen *screen; GdkX11Screen *x11_screen; GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); const char *scale_str; screen = g_object_new (GDK_TYPE_X11_SCREEN, NULL); x11_screen = GDK_X11_SCREEN (screen); x11_screen->display = display; x11_screen->xdisplay = display_x11->xdisplay; x11_screen->xscreen = ScreenOfDisplay (display_x11->xdisplay, screen_number); x11_screen->screen_num = screen_number; x11_screen->xroot_window = RootWindow (display_x11->xdisplay,screen_number); x11_screen->wmspec_check_window = None; /* we want this to be always non-null */ x11_screen->window_manager_name = g_strdup ("unknown"); #ifdef HAVE_CAIRO_SURFACE_SET_DEVICE_SCALE scale_str = g_getenv ("GDK_SCALE"); #else scale_str = "1"; #endif if (scale_str) { x11_screen->fixed_window_scale = TRUE; x11_screen->window_scale = atol (scale_str); if (x11_screen->window_scale == 0) x11_screen->window_scale = 1; } else x11_screen->window_scale = 1; init_multihead (screen); init_randr_support (screen); _gdk_x11_screen_init_visuals (screen); _gdk_x11_screen_init_root_window (screen); update_bounding_box (screen); return screen; }
GdkX11Screen * _gdk_x11_screen_new (GdkDisplay *display, gint screen_number, gboolean setup_display) { GdkX11Screen *x11_screen; GdkX11Display *display_x11 = GDK_X11_DISPLAY (display); const char *scale_str; x11_screen = g_object_new (GDK_TYPE_X11_SCREEN, NULL); x11_screen->display = display; x11_screen->xdisplay = display_x11->xdisplay; x11_screen->xscreen = ScreenOfDisplay (display_x11->xdisplay, screen_number); x11_screen->screen_num = screen_number; x11_screen->xroot_window = RootWindow (display_x11->xdisplay, screen_number); x11_screen->wmspec_check_window = None; /* we want this to be always non-null */ x11_screen->window_manager_name = g_strdup ("unknown"); scale_str = g_getenv ("GDK_SCALE"); if (scale_str) { x11_screen->fixed_surface_scale = TRUE; x11_screen->surface_scale = atol (scale_str); if (x11_screen->surface_scale <= 0) x11_screen->surface_scale = 1; } else x11_screen->surface_scale = 1; init_randr_support (x11_screen); init_multihead (x11_screen); _gdk_x11_screen_init_visuals (x11_screen, setup_display); return x11_screen; }
static void process_monitors_change (GdkX11Screen *screen) { init_multihead (screen); }