gboolean screen_update (GnomeRRScreen *screen, gboolean force_callback, gboolean needs_reprobe, GError **error) { ScreenInfo *info; gboolean changed = FALSE; g_return_val_if_fail (screen != NULL, FALSE); info = screen_info_new (screen, needs_reprobe, error); if (!info) return FALSE; #ifdef HAVE_RANDR if (info->resources->configTimestamp != screen->priv->info->resources->configTimestamp) changed = TRUE; #endif screen_info_free (screen->priv->info); screen->priv->info = info; if (changed || force_callback) g_signal_emit (G_OBJECT (screen), screen_signals[SCREEN_CHANGED], 0); return changed; }
static gboolean screen_update (MateRRScreen *screen, gboolean force_callback, gboolean needs_reprobe, GError **error) { ScreenInfo *info; gboolean changed = FALSE; g_assert (screen != NULL); info = screen_info_new (screen, needs_reprobe, error); if (!info) return FALSE; #ifdef HAVE_RANDR if (info->resources->configTimestamp != screen->info->resources->configTimestamp) changed = TRUE; #endif screen_info_free (screen->info); screen->info = info; if ((changed || force_callback) && screen->callback) screen->callback (screen, screen->data); return changed; }
static void gnome_rr_screen_finalize (GObject *gobject) { GnomeRRScreen *screen = GNOME_RR_SCREEN (gobject); if (screen->priv->info) screen_info_free (screen->priv->info); G_OBJECT_CLASS (gnome_rr_screen_parent_class)->finalize (gobject); }
void mate_rr_screen_destroy (MateRRScreen *screen) { g_return_if_fail (screen != NULL); gdk_window_remove_filter (screen->gdk_root, screen_on_event, screen); screen_info_free (screen->info); screen->info = NULL; g_free (screen); }
ScreenInfo * screen_info_new (GnomeRRScreen *screen, gboolean needs_reprobe, GError **error) { ScreenInfo *info = g_new0 (ScreenInfo, 1); g_return_val_if_fail (screen != NULL, NULL); info->outputs = NULL; info->crtcs = NULL; info->modes = NULL; info->screen = screen; if (fill_out_screen_info (screen, info, needs_reprobe, error)) { return info; } else { screen_info_free (info); return NULL; } }
static ScreenInfo * screen_info_new (MateRRScreen *screen, gboolean needs_reprobe, GError **error) { ScreenInfo *info = g_new0 (ScreenInfo, 1); g_assert (screen != NULL); info->outputs = NULL; info->crtcs = NULL; info->modes = NULL; info->screen = screen; if (fill_out_screen_info (screen->xdisplay, screen->xroot, info, needs_reprobe, error)) { return info; } else { screen_info_free (info); return NULL; } }