diff options
Diffstat (limited to 'src/core/prefs.c')
-rw-r--r-- | src/core/prefs.c | 77 |
1 files changed, 57 insertions, 20 deletions
diff --git a/src/core/prefs.c b/src/core/prefs.c index 97d3bbb7..2aa82c9a 100644 --- a/src/core/prefs.c +++ b/src/core/prefs.c @@ -42,7 +42,7 @@ #define KEY_TITLEBAR_FONT "titlebar-font" #define KEY_NUM_WORKSPACES "num-workspaces" #define KEY_WORKSPACE_NAMES "workspace-names" -#define KEY_COMPOSITOR "compositing-manager" +#define KEY_COMPOSITING_MANAGER "compositing-manager" #define KEY_PLACEMENT_MODE "placement-mode" /* Keys from "foreign" schemas */ @@ -86,7 +86,7 @@ static gboolean gnome_accessibility = FALSE; static gboolean gnome_animations = TRUE; static char *cursor_theme = NULL; static int cursor_size = 24; -static gboolean compositing_manager = TRUE; +static MetaCompositorType compositor = META_COMPOSITOR_TYPE_XRENDER; static gboolean resize_with_right_button = FALSE; static gboolean edge_tiling = FALSE; static gboolean force_fullscreen = TRUE; @@ -260,6 +260,13 @@ static MetaEnumPreference preferences_enum[] = }, ¤t_theme_type, }, + { + { "compositor", + SCHEMA_METACITY, + META_PREF_COMPOSITOR, + }, + &compositor, + }, { { NULL, 0, 0 }, NULL }, }; @@ -330,14 +337,6 @@ static MetaBoolPreference preferences_bool[] = TRUE, }, { - { "compositing-manager", - SCHEMA_METACITY, - META_PREF_COMPOSITING_MANAGER, - }, - &compositing_manager, - FALSE, - }, - { { "resize-with-right-button", SCHEMA_GENERAL, META_PREF_RESIZE_WITH_RIGHT_BUTTON, @@ -802,6 +801,35 @@ init_gtk_theme_name (void) G_CALLBACK (gtk_theme_name_changed), NULL); } +static void +update_compositing_manager (void) +{ + GVariant *user_value; + gboolean compositing_manager; + + user_value = g_settings_get_user_value (SETTINGS (SCHEMA_METACITY), + KEY_COMPOSITING_MANAGER); + + if (user_value == NULL) + return; + + compositing_manager = g_variant_get_boolean (user_value); + g_variant_unref (user_value); + + if (compositing_manager) + meta_prefs_set_compositor (META_COMPOSITOR_TYPE_XRENDER); + else + meta_prefs_set_compositor (META_COMPOSITOR_TYPE_NONE); + + g_settings_reset (SETTINGS (SCHEMA_METACITY), KEY_COMPOSITING_MANAGER); +} + +static void +init_compositing_manager (void) +{ + update_compositing_manager (); +} + /****************************************************************************/ /* Initialisation. */ /****************************************************************************/ @@ -844,6 +872,7 @@ meta_prefs_init (void) init_bindings (); init_workspace_names (); + init_compositing_manager (); init_gtk_cursor_theme_size (); init_gtk_theme_name (); @@ -871,6 +900,14 @@ settings_changed (GSettings *settings, return; } + else if (strcmp (key, KEY_COMPOSITING_MANAGER) == 0) + { + g_warning (_("Setting “" KEY_COMPOSITING_MANAGER "” is deprecated, " + "use the “compositor” instead.")); + + update_compositing_manager (); + return; + } value = g_settings_get_value (settings, key); type = g_variant_get_type (value); @@ -1216,8 +1253,8 @@ meta_preference_to_string (MetaPreference pref) case META_PREF_CURSOR_SIZE: return "CURSOR_SIZE"; - case META_PREF_COMPOSITING_MANAGER: - return "COMPOSITING_MANAGER"; + case META_PREF_COMPOSITOR: + return "META_PREF_COMPOSITOR"; case META_PREF_RESIZE_WITH_RIGHT_BUTTON: return "RESIZE_WITH_RIGHT_BUTTON"; @@ -1635,12 +1672,6 @@ meta_prefs_get_window_binding (const char *name, g_assert_not_reached (); } -gboolean -meta_prefs_get_compositing_manager (void) -{ - return compositing_manager; -} - guint meta_prefs_get_mouse_button_resize (void) { @@ -1671,10 +1702,16 @@ meta_prefs_get_alt_tab_thumbnails (void) return alt_tab_thumbnails; } +MetaCompositorType +meta_prefs_get_compositor (void) +{ + return compositor; +} + void -meta_prefs_set_compositing_manager (gboolean whether) +meta_prefs_set_compositor (MetaCompositorType type) { - g_settings_set_boolean (SETTINGS (SCHEMA_METACITY), KEY_COMPOSITOR, whether); + g_settings_set_enum (SETTINGS (SCHEMA_METACITY), "compositor", type); } void |