[gnome-flashback] display-config: remove display config interface
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-flashback] display-config: remove display config interface
- Date: Sat, 9 Sep 2017 22:18:52 +0000 (UTC)
commit 10b92bb46b47ee47b275146a4dc62cefda19c375
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Sun Sep 10 01:05:01 2017 +0300
display-config: remove display config interface
GNOME Settings Daemon and/or GNOME Control Center only supports
new / updated interface...
gnome-flashback/libdisplay-config/Makefile.am | 20 -
.../libdisplay-config/flashback-display-config.c | 931 +-------------------
.../libdisplay-config/flashback-monitor-manager.c | 71 +--
.../libdisplay-config/flashback-monitor-manager.h | 3 +-
.../org.gnome.Mutter.DisplayConfig.xml | 294 ------
5 files changed, 3 insertions(+), 1316 deletions(-)
---
diff --git a/gnome-flashback/libdisplay-config/Makefile.am b/gnome-flashback/libdisplay-config/Makefile.am
index d359838..8f2fed5 100644
--- a/gnome-flashback/libdisplay-config/Makefile.am
+++ b/gnome-flashback/libdisplay-config/Makefile.am
@@ -19,8 +19,6 @@ libdisplay_config_la_CFLAGS = \
libdisplay_config_la_SOURCES = \
edid-parse.c \
edid.h \
- meta-dbus-display-config.c \
- meta-dbus-display-config.h \
meta-display-config-shared.h \
flashback-confirm-dialog.c \
flashback-confirm-dialog.h \
@@ -41,26 +39,8 @@ libdisplay_config_la_LIBADD = \
$(DISPLAY_CONFIG_LIBS) \
$(NULL)
-meta-dbus-display-config.h:
-meta-dbus-display-config.c: org.gnome.Mutter.DisplayConfig.xml
- $(AM_V_GEN) gdbus-codegen \
- --interface-prefix org.gnome.Mutter \
- --c-namespace MetaDBus \
- --generate-c-code meta-dbus-display-config \
- $(srcdir)/org.gnome.Mutter.DisplayConfig.xml
-
-BUILT_SOURCES = \
- meta-dbus-display-config.h \
- meta-dbus-display-config.c \
- $(NULL)
-
EXTRA_DIST = \
- org.gnome.Mutter.DisplayConfig.xml \
flashback-confirm-dialog.ui \
$(NULL)
-CLEANFILES = \
- $(BUILT_SOURCES) \
- $(NULL)
-
-include $(top_srcdir)/git.mk
diff --git a/gnome-flashback/libdisplay-config/flashback-display-config.c
b/gnome-flashback/libdisplay-config/flashback-display-config.c
index cdecdbe..4cff8c5 100644
--- a/gnome-flashback/libdisplay-config/flashback-display-config.c
+++ b/gnome-flashback/libdisplay-config/flashback-display-config.c
@@ -37,916 +37,11 @@
struct _FlashbackDisplayConfig
{
GObject parent;
- gint bus_name;
- MetaDBusDisplayConfig *skeleton;
FlashbackMonitorManager *manager;
- GtkWidget *confirm_dialog;
};
G_DEFINE_TYPE (FlashbackDisplayConfig, flashback_display_config, G_TYPE_OBJECT)
-static const double known_diagonals[] = { 12.1, 13.3, 15.6 };
-
-static void
-power_save_mode_changed (MetaDBusDisplayConfig *skeleton,
- GParamSpec *pspec,
- gpointer user_data)
-{
- FlashbackDisplayConfig *config;
- FlashbackMonitorManager *manager;
- int mode;
-
- config = FLASHBACK_DISPLAY_CONFIG (user_data);
- manager = config->manager;
-
- mode = meta_dbus_display_config_get_power_save_mode (skeleton);
-
- if (mode == META_POWER_SAVE_UNSUPPORTED)
- return;
-
- /* If DPMS is unsupported, force the property back. */
- if (manager->power_save_mode == META_POWER_SAVE_UNSUPPORTED)
- {
- meta_dbus_display_config_set_power_save_mode (skeleton, META_POWER_SAVE_UNSUPPORTED);
- return;
- }
-
- flashback_monitor_manager_set_power_save_mode (manager, mode);
- manager->power_save_mode = mode;
-}
-
-static void
-destroy_confirm_dialog (FlashbackDisplayConfig *dialog)
-{
- if (dialog->confirm_dialog != NULL)
- {
- gtk_widget_destroy (GTK_WIDGET (dialog->confirm_dialog));
- dialog->confirm_dialog = NULL;
- }
-}
-
-static gboolean
-save_config_timeout (gpointer user_data)
-{
- FlashbackDisplayConfig *dispay_config;
-
- dispay_config = FLASHBACK_DISPLAY_CONFIG (user_data);
-
- destroy_confirm_dialog (dispay_config);
-
- flashback_monitor_config_restore_previous (dispay_config->manager->monitor_config);
-
- dispay_config->manager->persistent_timeout_id = 0;
- return G_SOURCE_REMOVE;
-}
-
-static void
-confirm_dialog_response_cb (FlashbackConfirmDialog *dialog,
- gint response_id,
- gpointer user_data)
-{
- FlashbackDisplayConfig *config;
- gboolean ok;
-
- config = FLASHBACK_DISPLAY_CONFIG (user_data);
-
- switch (response_id)
- {
- case FLASHBACK_CONFIRM_DIALOG_RESPONSE_KEEP_CHANGES:
- ok = TRUE;
- break;
- case FLASHBACK_CONFIRM_DIALOG_RESPONSE_REVERT_SETTINGS:
- default:
- ok = FALSE;
- break;
- }
-
- destroy_confirm_dialog (config);
-
- flashback_monitor_manager_confirm_configuration (config->manager, ok);
-}
-
-static gboolean
-output_can_config (MetaOutput *output,
- MetaCRTC *crtc,
- MetaMonitorMode *mode)
-{
- unsigned int i;
- gboolean ok = FALSE;
-
- for (i = 0; i < output->n_possible_crtcs && !ok; i++)
- ok = output->possible_crtcs[i] == crtc;
-
- if (!ok)
- return FALSE;
-
- if (mode == NULL)
- return TRUE;
-
- ok = FALSE;
- for (i = 0; i < output->n_modes && !ok; i++)
- ok = output->modes[i] == mode;
-
- return ok;
-}
-
-static gboolean
-output_can_clone (MetaOutput *output,
- MetaOutput *clone)
-{
- unsigned int i;
- gboolean ok = FALSE;
-
- for (i = 0; i < output->n_possible_clones && !ok; i++)
- ok = output->possible_clones[i] == clone;
-
- return ok;
-}
-
-static char *
-diagonal_to_str (double d)
-{
- unsigned int i;
-
- for (i = 0; i < G_N_ELEMENTS (known_diagonals); i++)
- {
- double delta;
-
- delta = fabs(known_diagonals[i] - d);
- if (delta < 0.1)
- return g_strdup_printf ("%0.1lf\"", known_diagonals[i]);
- }
-
- return g_strdup_printf ("%d\"", (int) (d + 0.5));
-}
-
-static char *
-make_display_name (FlashbackMonitorManager *manager,
- MetaOutput *output)
-{
- MetaConnectorType type;
- char *inches = NULL;
- char *vendor_name = NULL;
- char *ret;
-
- type = output->connector_type;
-
- if (type == META_CONNECTOR_TYPE_eDP || type == META_CONNECTOR_TYPE_LVDS)
- return g_strdup (_("Built-in display"));
-
- if (output->width_mm > 0 && output->height_mm > 0)
- {
- double d = sqrt (output->width_mm * output->width_mm +
- output->height_mm * output->height_mm);
- inches = diagonal_to_str (d / 25.4);
- }
-
- if (g_strcmp0 (output->vendor, "unknown") != 0)
- {
- if (!manager->pnp_ids)
- manager->pnp_ids = gnome_pnp_ids_new ();
-
- vendor_name = gnome_pnp_ids_get_pnp_id (manager->pnp_ids,
- output->vendor);
-
- if (!vendor_name)
- vendor_name = g_strdup (output->vendor);
- }
- else
- {
- if (inches != NULL)
- vendor_name = g_strdup (_("Unknown"));
- else
- vendor_name = g_strdup (_("Unknown Display"));
- }
-
- if (inches != NULL)
- {
- /* TRANSLATORS: this is a monitor vendor name, followed by a
- * size in inches, like 'Dell 15"'
- */
- ret = g_strdup_printf (_("%s %s"), vendor_name, inches);
- }
- else
- {
- ret = g_strdup (vendor_name);
- }
-
- g_free (inches);
- g_free (vendor_name);
-
- return ret;
-}
-
-static const char *
-get_connector_type_name (MetaConnectorType connector_type)
-{
- switch (connector_type)
- {
- case META_CONNECTOR_TYPE_Unknown:
- return "Unknown";
- case META_CONNECTOR_TYPE_VGA:
- return "VGA";
- case META_CONNECTOR_TYPE_DVII:
- return "DVII";
- case META_CONNECTOR_TYPE_DVID:
- return "DVID";
- case META_CONNECTOR_TYPE_DVIA:
- return "DVIA";
- case META_CONNECTOR_TYPE_Composite:
- return "Composite";
- case META_CONNECTOR_TYPE_SVIDEO:
- return "SVIDEO";
- case META_CONNECTOR_TYPE_LVDS:
- return "LVDS";
- case META_CONNECTOR_TYPE_Component:
- return "Component";
- case META_CONNECTOR_TYPE_9PinDIN:
- return "9PinDIN";
- case META_CONNECTOR_TYPE_DisplayPort:
- return "DisplayPort";
- case META_CONNECTOR_TYPE_HDMIA:
- return "HDMIA";
- case META_CONNECTOR_TYPE_HDMIB:
- return "HDMIB";
- case META_CONNECTOR_TYPE_TV:
- return "TV";
- case META_CONNECTOR_TYPE_eDP:
- return "eDP";
- case META_CONNECTOR_TYPE_VIRTUAL:
- return "VIRTUAL";
- case META_CONNECTOR_TYPE_DSI:
- return "DSI";
- default:
- g_assert_not_reached ();
- }
-}
-
-static gboolean
-handle_get_resources (MetaDBusDisplayConfig *skeleton,
- GDBusMethodInvocation *invocation,
- gpointer user_data)
-{
- FlashbackDisplayConfig *config;
- FlashbackMonitorManager *manager;
- GVariantBuilder crtc_builder;
- GVariantBuilder output_builder;
- GVariantBuilder mode_builder;
- unsigned int i;
- unsigned int j;
-
- config = FLASHBACK_DISPLAY_CONFIG (user_data);
- manager = config->manager;
-
- g_variant_builder_init (&crtc_builder, G_VARIANT_TYPE ("a(uxiiiiiuaua{sv})"));
- g_variant_builder_init (&output_builder, G_VARIANT_TYPE ("a(uxiausauaua{sv})"));
- g_variant_builder_init (&mode_builder, G_VARIANT_TYPE ("a(uxuudu)"));
-
- for (i = 0; i < manager->n_crtcs; i++)
- {
- MetaCRTC *crtc;
- GVariantBuilder transforms;
-
- crtc = &manager->crtcs[i];
-
- g_variant_builder_init (&transforms, G_VARIANT_TYPE ("au"));
- for (j = 0; j <= META_MONITOR_TRANSFORM_FLIPPED_270; j++)
- if (crtc->all_transforms & (1 << j))
- g_variant_builder_add (&transforms, "u", j);
-
- g_variant_builder_add (&crtc_builder, "(uxiiiiiuaua{sv})",
- i, /* ID */
- (gint64) crtc->crtc_id,
- (int) crtc->rect.x,
- (int) crtc->rect.y,
- (int) crtc->rect.width,
- (int) crtc->rect.height,
- (int) (crtc->current_mode ? crtc->current_mode - manager->modes : -1),
- (guint32) crtc->transform,
- &transforms,
- NULL /* properties */);
- }
-
- for (i = 0; i < manager->n_outputs; i++)
- {
- MetaOutput *output;
- GVariantBuilder crtcs;
- GVariantBuilder modes;
- GVariantBuilder clones;
- GVariantBuilder properties;
- GBytes *edid;
-
- output = &manager->outputs[i];
-
- g_variant_builder_init (&crtcs, G_VARIANT_TYPE ("au"));
- for (j = 0; j < output->n_possible_crtcs; j++)
- g_variant_builder_add (&crtcs, "u",
- (unsigned)(output->possible_crtcs[j] - manager->crtcs));
-
- g_variant_builder_init (&modes, G_VARIANT_TYPE ("au"));
- for (j = 0; j < output->n_modes; j++)
- g_variant_builder_add (&modes, "u",
- (unsigned)(output->modes[j] - manager->modes));
-
- g_variant_builder_init (&clones, G_VARIANT_TYPE ("au"));
- for (j = 0; j < output->n_possible_clones; j++)
- g_variant_builder_add (&clones, "u",
- (unsigned)(output->possible_clones[j] - manager->outputs));
-
- g_variant_builder_init (&properties, G_VARIANT_TYPE ("a{sv}"));
- g_variant_builder_add (&properties, "{sv}", "vendor",
- g_variant_new_string (output->vendor));
- g_variant_builder_add (&properties, "{sv}", "product",
- g_variant_new_string (output->product));
- g_variant_builder_add (&properties, "{sv}", "serial",
- g_variant_new_string (output->serial));
- g_variant_builder_add (&properties, "{sv}", "width-mm",
- g_variant_new_int32 (output->width_mm));
- g_variant_builder_add (&properties, "{sv}", "height-mm",
- g_variant_new_int32 (output->height_mm));
- g_variant_builder_add (&properties, "{sv}", "display-name",
- g_variant_new_take_string (make_display_name (manager, output)));
- g_variant_builder_add (&properties, "{sv}", "backlight",
- g_variant_new_int32 (output->backlight));
- g_variant_builder_add (&properties, "{sv}", "min-backlight-step",
- g_variant_new_int32 ((output->backlight_max - output->backlight_min) ?
- 100 / (output->backlight_max - output->backlight_min) :
-1));
- g_variant_builder_add (&properties, "{sv}", "primary",
- g_variant_new_boolean (output->is_primary));
- g_variant_builder_add (&properties, "{sv}", "presentation",
- g_variant_new_boolean (output->is_presentation));
- g_variant_builder_add (&properties, "{sv}", "connector-type",
- g_variant_new_string (get_connector_type_name (output->connector_type)));
- g_variant_builder_add (&properties, "{sv}", "underscanning",
- g_variant_new_boolean (output->is_underscanning));
- g_variant_builder_add (&properties, "{sv}", "supports-underscanning",
- g_variant_new_boolean (output->supports_underscanning));
-
- edid = flashback_monitor_manager_read_edid (manager, output);
-
- if (edid)
- {
- g_variant_builder_add (&properties, "{sv}", "edid",
- g_variant_new_from_bytes (G_VARIANT_TYPE ("ay"),
- edid, TRUE));
- g_bytes_unref (edid);
- }
-
- if (output->tile_info.group_id)
- {
- g_variant_builder_add (&properties, "{sv}", "tile",
- g_variant_new ("(uuuuuuuu)",
- output->tile_info.group_id,
- output->tile_info.flags,
- output->tile_info.max_h_tiles,
- output->tile_info.max_v_tiles,
- output->tile_info.loc_h_tile,
- output->tile_info.loc_v_tile,
- output->tile_info.tile_w,
- output->tile_info.tile_h));
- }
-
- g_variant_builder_add (&output_builder, "(uxiausauaua{sv})",
- i, /* ID */
- (gint64) output->winsys_id,
- (int) (output->crtc ? output->crtc - manager->crtcs : -1),
- &crtcs,
- output->name,
- &modes,
- &clones,
- &properties);
- }
-
- for (i = 0; i < manager->n_modes; i++)
- {
- MetaMonitorMode *mode;
-
- mode = &manager->modes[i];
-
- g_variant_builder_add (&mode_builder, "(uxuudu)",
- i, /* ID */
- (gint64) mode->mode_id,
- (guint32) mode->width,
- (guint32) mode->height,
- (double) mode->refresh_rate,
- (guint32) mode->flags);
- }
-
- meta_dbus_display_config_complete_get_resources (skeleton,
- invocation,
- manager->serial,
- g_variant_builder_end (&crtc_builder),
- g_variant_builder_end (&output_builder),
- g_variant_builder_end (&mode_builder),
- manager->max_screen_width,
- manager->max_screen_height);
-
- return TRUE;
-}
-
-static gboolean
-handle_apply_configuration (MetaDBusDisplayConfig *skeleton,
- GDBusMethodInvocation *invocation,
- guint serial,
- gboolean persistent,
- GVariant *crtcs,
- GVariant *outputs,
- gpointer user_data)
-{
- FlashbackDisplayConfig *config;
- FlashbackMonitorManager *manager;
- GVariantIter crtc_iter;
- GVariantIter output_iter;
- GVariantIter *nested_outputs;
- GVariant *properties;
- guint crtc_id;
- int new_mode;
- int x;
- int y;
- int new_screen_width;
- int new_screen_height;
- gint transform;
- guint output_index;
- GPtrArray *crtc_infos;
- GPtrArray *output_infos;
-
- config = FLASHBACK_DISPLAY_CONFIG (user_data);
- manager = config->manager;
-
- if (serial != manager->serial)
- {
- g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
- G_DBUS_ERROR_ACCESS_DENIED,
- "The requested configuration is based on stale information");
- return TRUE;
- }
-
- crtc_infos = g_ptr_array_new_full (g_variant_n_children (crtcs),
- (GDestroyNotify) meta_crtc_info_free);
- output_infos = g_ptr_array_new_full (g_variant_n_children (outputs),
- (GDestroyNotify) meta_output_info_free);
-
- /* Validate all arguments */
- new_screen_width = 0; new_screen_height = 0;
- g_variant_iter_init (&crtc_iter, crtcs);
- while (g_variant_iter_loop (&crtc_iter, "(uiiiuaua{sv})",
- &crtc_id, &new_mode, &x, &y, &transform,
- &nested_outputs, NULL))
- {
- MetaCRTCInfo *crtc_info;
- MetaOutput *first_output;
- MetaCRTC *crtc;
- MetaMonitorMode *mode;
-
- crtc_info = g_slice_new (MetaCRTCInfo);
- crtc_info->outputs = g_ptr_array_new ();
-
- if (crtc_id >= manager->n_crtcs)
- {
- g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
- G_DBUS_ERROR_INVALID_ARGS,
- "Invalid CRTC id");
- return TRUE;
- }
-
- crtc = &manager->crtcs[crtc_id];
- crtc_info->crtc = crtc;
-
- if (new_mode != -1 && (new_mode < 0 || (unsigned) new_mode >= manager->n_modes))
- {
- g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
- G_DBUS_ERROR_INVALID_ARGS,
- "Invalid mode id");
- return TRUE;
- }
-
- mode = new_mode != -1 ? &manager->modes[new_mode] : NULL;
- crtc_info->mode = mode;
-
- if (mode)
- {
- int width;
- int height;
-
- if (transform % 2)
- {
- width = mode->height;
- height = mode->width;
- }
- else
- {
- width = mode->width;
- height = mode->height;
- }
-
- if (x < 0 ||
- x + width > manager->max_screen_width ||
- y < 0 ||
- y + height > manager->max_screen_height)
- {
- g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
- G_DBUS_ERROR_INVALID_ARGS,
- "Invalid CRTC geometry");
- return TRUE;
- }
-
- new_screen_width = MAX (new_screen_width, x + width);
- new_screen_height = MAX (new_screen_height, y + height);
- crtc_info->x = x;
- crtc_info->y = y;
- }
- else
- {
- crtc_info->x = 0;
- crtc_info->y = 0;
- }
-
- if (transform < META_MONITOR_TRANSFORM_NORMAL ||
- transform > META_MONITOR_TRANSFORM_FLIPPED_270 ||
- ((crtc->all_transforms & (1 << transform)) == 0))
- {
- g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
- G_DBUS_ERROR_INVALID_ARGS,
- "Invalid transform");
- return TRUE;
- }
-
- crtc_info->transform = transform;
-
- first_output = NULL;
- while (g_variant_iter_loop (nested_outputs, "u", &output_index))
- {
- MetaOutput *output;
-
- if (output_index >= manager->n_outputs)
- {
- g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
- G_DBUS_ERROR_INVALID_ARGS,
- "Invalid output id");
- return TRUE;
- }
-
- output = &manager->outputs[output_index];
-
- if (!output_can_config (output, crtc, mode))
- {
- g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
- G_DBUS_ERROR_INVALID_ARGS,
- "Output cannot be assigned to this CRTC or mode");
- return TRUE;
- }
-
- g_ptr_array_add (crtc_info->outputs, output);
-
- if (first_output)
- {
- if (!output_can_clone (output, first_output))
- {
- g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
- G_DBUS_ERROR_INVALID_ARGS,
- "Outputs cannot be cloned");
- return TRUE;
- }
- }
- else
- first_output = output;
- }
-
- if (!first_output && mode)
- {
- g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
- G_DBUS_ERROR_INVALID_ARGS,
- "Mode specified without outputs?");
- return TRUE;
- }
-
- g_ptr_array_add (crtc_infos, crtc_info);
- }
-
- if (new_screen_width == 0 || new_screen_height == 0)
- {
- g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
- G_DBUS_ERROR_INVALID_ARGS,
- "Refusing to disable all outputs");
- return TRUE;
- }
-
- g_variant_iter_init (&output_iter, outputs);
- while (g_variant_iter_loop (&output_iter, "(u@a{sv})", &output_index, &properties))
- {
- MetaOutputInfo *output_info;
- gboolean primary;
- gboolean presentation;
- gboolean underscanning;
-
- if (output_index >= manager->n_outputs)
- {
- g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
- G_DBUS_ERROR_INVALID_ARGS,
- "Invalid output id");
- return TRUE;
- }
-
- output_info = g_slice_new0 (MetaOutputInfo);
- output_info->output = &manager->outputs[output_index];
-
- if (g_variant_lookup (properties, "primary", "b", &primary))
- output_info->is_primary = primary;
-
- if (g_variant_lookup (properties, "presentation", "b", &presentation))
- output_info->is_presentation = presentation;
-
- if (g_variant_lookup (properties, "underscanning", "b", &underscanning))
- output_info->is_underscanning = underscanning;
-
- g_ptr_array_add (output_infos, output_info);
- }
-
- /* If we were in progress of making a persistent change and we see a
- new request, it's likely that the old one failed in some way, so
- don't save it, but also don't queue for restoring it.
- */
- if (manager->persistent_timeout_id && persistent)
- {
- g_source_remove (manager->persistent_timeout_id);
- manager->persistent_timeout_id = 0;
- }
-
- flashback_monitor_manager_apply_configuration (manager,
- (MetaCRTCInfo **) crtc_infos->pdata,
- crtc_infos->len,
- (MetaOutputInfo **) output_infos->pdata,
- output_infos->len);
-
- g_ptr_array_unref (crtc_infos);
- g_ptr_array_unref (output_infos);
-
- /* Update MetaMonitorConfig data structures immediately so that we
- don't revert the change at the next XRandR event, then ask the plugin
- manager (through MetaScreen) to confirm the display change with the
- appropriate UI. Then wait 20 seconds and if not confirmed, revert the
- configuration.
- */
- flashback_monitor_config_update_current (manager->monitor_config);
-
- if (persistent)
- {
- manager->persistent_timeout_id = g_timeout_add_seconds (20, save_config_timeout, config);
- g_source_set_name_by_id (manager->persistent_timeout_id, "[gnome-flashback] save_config_timeout");
-
- config->confirm_dialog = flashback_confirm_dialog_new (20);
- g_signal_connect (config->confirm_dialog, "response",
- G_CALLBACK (confirm_dialog_response_cb), config);
-
- gtk_window_present (GTK_WINDOW (config->confirm_dialog));
- }
-
- meta_dbus_display_config_complete_apply_configuration (skeleton,
- invocation);
-
- return TRUE;
-}
-
-static gboolean
-handle_change_backlight (MetaDBusDisplayConfig *skeleton,
- GDBusMethodInvocation *invocation,
- guint serial,
- guint output_index,
- gint value,
- gpointer user_data)
-{
- FlashbackDisplayConfig *config;
- FlashbackMonitorManager *manager;
- MetaOutput *output;
-
- config = FLASHBACK_DISPLAY_CONFIG (user_data);
- manager = config->manager;
-
- if (serial != manager->serial)
- {
- g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
- G_DBUS_ERROR_ACCESS_DENIED,
- "The requested configuration is based on stale information");
- return TRUE;
- }
-
- if (output_index >= manager->n_outputs)
- {
- g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
- G_DBUS_ERROR_INVALID_ARGS,
- "Invalid output id");
- return TRUE;
- }
-
- output = &manager->outputs[output_index];
-
- if (value < 0 || value > 100)
- {
- g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
- G_DBUS_ERROR_INVALID_ARGS,
- "Invalid backlight value");
- return TRUE;
- }
-
- if (output->backlight == -1 ||
- (output->backlight_min == 0 && output->backlight_max == 0))
- {
- g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
- G_DBUS_ERROR_INVALID_ARGS,
- "Output does not support changing backlight");
- return TRUE;
- }
-
- flashback_monitor_manager_change_backlight (manager, output, value);
-
- meta_dbus_display_config_complete_change_backlight (skeleton,
- invocation,
- output->backlight);
-
- return TRUE;
-}
-
-static gboolean
-handle_get_crtc_gamma (MetaDBusDisplayConfig *skeleton,
- GDBusMethodInvocation *invocation,
- guint serial,
- guint crtc_id,
- gpointer user_data)
-{
- FlashbackDisplayConfig *config;
- FlashbackMonitorManager *manager;
- MetaCRTC *crtc;
- gsize size;
- unsigned short *red;
- unsigned short *green;
- unsigned short *blue;
- GBytes *red_bytes;
- GBytes *green_bytes;
- GBytes *blue_bytes;
- GVariant *red_v;
- GVariant *green_v;
- GVariant *blue_v;
-
- config = FLASHBACK_DISPLAY_CONFIG (user_data);
- manager = config->manager;
-
- if (serial != manager->serial)
- {
- g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
- G_DBUS_ERROR_ACCESS_DENIED,
- "The requested configuration is based on stale information");
- return TRUE;
- }
-
- if (crtc_id >= manager->n_crtcs)
- {
- g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
- G_DBUS_ERROR_INVALID_ARGS,
- "Invalid crtc id");
- return TRUE;
- }
-
- crtc = &manager->crtcs[crtc_id];
-
- flashback_monitor_manager_get_crtc_gamma (manager, crtc, &size, &red, &green, &blue);
-
- red_bytes = g_bytes_new_take (red, size * sizeof (unsigned short));
- green_bytes = g_bytes_new_take (green, size * sizeof (unsigned short));
- blue_bytes = g_bytes_new_take (blue, size * sizeof (unsigned short));
-
- red_v = g_variant_new_from_bytes (G_VARIANT_TYPE ("aq"), red_bytes, TRUE);
- green_v = g_variant_new_from_bytes (G_VARIANT_TYPE ("aq"), green_bytes, TRUE);
- blue_v = g_variant_new_from_bytes (G_VARIANT_TYPE ("aq"), blue_bytes, TRUE);
-
- g_bytes_unref (red_bytes);
- g_bytes_unref (green_bytes);
- g_bytes_unref (blue_bytes);
-
- meta_dbus_display_config_complete_get_crtc_gamma (skeleton,
- invocation,
- red_v,
- green_v,
- blue_v);
-
- return TRUE;
-}
-
-static gboolean
-handle_set_crtc_gamma (MetaDBusDisplayConfig *skeleton,
- GDBusMethodInvocation *invocation,
- guint serial,
- guint crtc_id,
- GVariant *red_v,
- GVariant *green_v,
- GVariant *blue_v,
- gpointer user_data)
-{
- FlashbackDisplayConfig *config;
- FlashbackMonitorManager *manager;
- MetaCRTC *crtc;
- gsize size;
- gsize dummy;
- unsigned short *red;
- unsigned short *green;
- unsigned short *blue;
- GBytes *red_bytes;
- GBytes *green_bytes;
- GBytes *blue_bytes;
-
- config = FLASHBACK_DISPLAY_CONFIG (user_data);
- manager = config->manager;
-
- if (serial != manager->serial)
- {
- g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
- G_DBUS_ERROR_ACCESS_DENIED,
- "The requested configuration is based on stale information");
- return TRUE;
- }
-
- if (crtc_id >= manager->n_crtcs)
- {
- g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
- G_DBUS_ERROR_INVALID_ARGS,
- "Invalid crtc id");
- return TRUE;
- }
-
- crtc = &manager->crtcs[crtc_id];
-
- red_bytes = g_variant_get_data_as_bytes (red_v);
- green_bytes = g_variant_get_data_as_bytes (green_v);
- blue_bytes = g_variant_get_data_as_bytes (blue_v);
-
- size = g_bytes_get_size (red_bytes) / sizeof (unsigned short);
- red = (unsigned short*) g_bytes_get_data (red_bytes, &dummy);
- green = (unsigned short*) g_bytes_get_data (green_bytes, &dummy);
- blue = (unsigned short*) g_bytes_get_data (blue_bytes, &dummy);
-
- flashback_monitor_manager_set_crtc_gamma (manager, crtc, size, red, green, blue);
-
- g_bytes_unref (red_bytes);
- g_bytes_unref (green_bytes);
- g_bytes_unref (blue_bytes);
-
- meta_dbus_display_config_complete_set_crtc_gamma (skeleton,
- invocation);
-
- return TRUE;
-}
-
-static void
-on_bus_acquired (GDBusConnection *connection,
- const gchar *name,
- gpointer user_data)
-{
- FlashbackDisplayConfig *config;
- GDBusInterfaceSkeleton *iface;
- GError *error;
-
- config = FLASHBACK_DISPLAY_CONFIG (user_data);
-
- g_signal_connect (config->skeleton, "handle-get-resources",
- G_CALLBACK (handle_get_resources), config);
- g_signal_connect (config->skeleton, "handle-apply-configuration",
- G_CALLBACK (handle_apply_configuration), config);
- g_signal_connect (config->skeleton, "handle-change-backlight",
- G_CALLBACK (handle_change_backlight), config);
- g_signal_connect (config->skeleton, "handle-get-crtc-gamma",
- G_CALLBACK (handle_get_crtc_gamma), config);
- g_signal_connect (config->skeleton, "handle-set-crtc-gamma",
- G_CALLBACK (handle_set_crtc_gamma), config);
-
- g_signal_connect (config->skeleton, "notify::power-save-mode",
- G_CALLBACK (power_save_mode_changed), config);
-
- iface = G_DBUS_INTERFACE_SKELETON (config->skeleton);
- error = NULL;
-
- if (!g_dbus_interface_skeleton_export (iface, connection,
- "/org/gnome/Mutter/DisplayConfig",
- &error))
- {
- g_warning ("Failed to export interface: %s", error->message);
- g_error_free (error);
- return;
- }
-}
-
-static void
-on_name_acquired (GDBusConnection *connection,
- const char *name,
- gpointer user_data)
-{
-}
-
-static void
-on_name_lost (GDBusConnection *connection,
- const char *name,
- gpointer user_data)
-{
-}
-
static void
flashback_display_config_finalize (GObject *object)
{
@@ -954,20 +49,6 @@ flashback_display_config_finalize (GObject *object)
config = FLASHBACK_DISPLAY_CONFIG (object);
- if (config->skeleton)
- {
- g_dbus_interface_skeleton_unexport (G_DBUS_INTERFACE_SKELETON (config->skeleton));
- g_clear_object (&config->skeleton);
- }
-
- if (config->bus_name)
- {
- g_bus_unown_name (config->bus_name);
- config->bus_name = 0;
- }
-
- destroy_confirm_dialog (config);
-
g_clear_object (&config->manager);
G_OBJECT_CLASS (flashback_display_config_parent_class)->finalize (object);
@@ -986,17 +67,7 @@ flashback_display_config_class_init (FlashbackDisplayConfigClass *config_class)
static void
flashback_display_config_init (FlashbackDisplayConfig *config)
{
- config->skeleton = meta_dbus_display_config_skeleton_new ();
- config->manager = flashback_monitor_manager_new (config->skeleton);
- config->bus_name = g_bus_own_name (G_BUS_TYPE_SESSION,
- "org.gnome.Mutter.DisplayConfig",
- G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT |
- G_BUS_NAME_OWNER_FLAGS_REPLACE,
- on_bus_acquired,
- on_name_acquired,
- on_name_lost,
- config,
- NULL);
+ config->manager = flashback_monitor_manager_new ();
}
FlashbackDisplayConfig *
diff --git a/gnome-flashback/libdisplay-config/flashback-monitor-manager.c
b/gnome-flashback/libdisplay-config/flashback-monitor-manager.c
index 796aaab..82b80bd 100644
--- a/gnome-flashback/libdisplay-config/flashback-monitor-manager.c
+++ b/gnome-flashback/libdisplay-config/flashback-monitor-manager.c
@@ -70,23 +70,12 @@ struct _FlashbackMonitorManagerPrivate
gboolean has_randr13;
gboolean has_randr15;
-
- MetaDBusDisplayConfig *display_config;
};
G_DEFINE_TYPE_WITH_PRIVATE (FlashbackMonitorManager, flashback_monitor_manager, G_TYPE_OBJECT)
enum
{
- PROP_0,
- PROP_DISPLAY_CONFIG,
- N_PROPERTIES
-};
-
-static GParamSpec *object_properties[N_PROPERTIES] = { NULL, };
-
-enum
-{
MONITORS_CHANGED,
LAST_SIGNAL
@@ -1534,50 +1523,6 @@ flashback_monitor_manager_constructed (GObject *object)
}
static void
-flashback_monitor_manager_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- FlashbackMonitorManager *manager;
-
- manager = FLASHBACK_MONITOR_MANAGER (object);
-
- switch (property_id)
- {
- case PROP_DISPLAY_CONFIG:
- if (manager->priv->display_config)
- g_object_unref (manager->priv->display_config);
- manager->priv->display_config = g_value_get_object (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
-static void
-flashback_monitor_manager_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
-{
- FlashbackMonitorManager *manager;
-
- manager = FLASHBACK_MONITOR_MANAGER (object);
-
- switch (property_id)
- {
- case PROP_DISPLAY_CONFIG:
- g_value_set_object (value, manager->priv->display_config);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
-static void
flashback_monitor_manager_finalize (GObject *object)
{
FlashbackMonitorManager *manager;
@@ -1606,20 +1551,8 @@ flashback_monitor_manager_class_init (FlashbackMonitorManagerClass *manager_clas
object_class = G_OBJECT_CLASS (manager_class);
object_class->constructed = flashback_monitor_manager_constructed;
- object_class->set_property = flashback_monitor_manager_set_property;
- object_class->get_property = flashback_monitor_manager_get_property;
object_class->finalize = flashback_monitor_manager_finalize;
- object_properties[PROP_DISPLAY_CONFIG] =
- g_param_spec_object ("display-config",
- "display-config",
- "display-config",
- META_DBUS_TYPE_DISPLAY_CONFIG,
- G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE);
-
- g_object_class_install_properties (object_class, N_PROPERTIES,
- object_properties);
-
signals[MONITORS_CHANGED] =
g_signal_new ("monitors-changed", FLASHBACK_TYPE_MONITOR_MANAGER,
G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
@@ -1665,10 +1598,9 @@ flashback_monitor_manager_init (FlashbackMonitorManager *manager)
}
FlashbackMonitorManager *
-flashback_monitor_manager_new (MetaDBusDisplayConfig *display_config)
+flashback_monitor_manager_new (void)
{
return g_object_new (FLASHBACK_TYPE_MONITOR_MANAGER,
- "display-config", display_config,
NULL);
}
@@ -2271,7 +2203,6 @@ flashback_monitor_manager_rebuild_derived (FlashbackMonitorManager *manager)
remove_monitor (manager, old_monitor_infos[i].monitor_winsys_xid);
}
- g_signal_emit_by_name (manager->priv->display_config, "monitors-changed");
g_signal_emit (manager, signals[MONITORS_CHANGED], 0);
g_free (old_monitor_infos);
diff --git a/gnome-flashback/libdisplay-config/flashback-monitor-manager.h
b/gnome-flashback/libdisplay-config/flashback-monitor-manager.h
index 77ee2f8..e9bbc0d 100644
--- a/gnome-flashback/libdisplay-config/flashback-monitor-manager.h
+++ b/gnome-flashback/libdisplay-config/flashback-monitor-manager.h
@@ -29,7 +29,6 @@
#include <gdk/gdk.h>
#include <libgnome-desktop/gnome-pnp-ids.h>
#include "meta-display-config-shared.h"
-#include "meta-dbus-display-config.h"
G_BEGIN_DECLS
@@ -289,7 +288,7 @@ struct _FlashbackMonitorManager
FlashbackMonitorManagerPrivate *priv;
};
-FlashbackMonitorManager *flashback_monitor_manager_new (MetaDBusDisplayConfig
*display_config);
+FlashbackMonitorManager *flashback_monitor_manager_new (void);
void flashback_monitor_manager_apply_configuration (FlashbackMonitorManager
*manager,
MetaCRTCInfo **crtcs,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]