rpms/control-center/devel add-randr12-capplet.patch, 1.3, 1.4 control-center.spec, 1.331, 1.332
Soren Sandmann Pedersen (ssp)
fedora-extras-commits at redhat.com
Thu Jan 31 18:24:45 UTC 2008
- Previous message (by thread): rpms/syslog-ng/F-7 .cvsignore, 1.14, 1.15 sources, 1.14, 1.15 syslog-ng.spec, 1.28, 1.29 logrotation-bug-2.0.7.patch, 1.1, NONE
- Next message (by thread): rpms/bug-buddy/devel c++.patch,1.2,1.3
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: ssp
Update of /cvs/pkgs/rpms/control-center/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv32109
Modified Files:
add-randr12-capplet.patch control-center.spec
Log Message:
Update capplet
add-randr12-capplet.patch:
Index: add-randr12-capplet.patch
===================================================================
RCS file: /cvs/pkgs/rpms/control-center/devel/add-randr12-capplet.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- add-randr12-capplet.patch 29 Jan 2008 21:59:52 -0000 1.3
+++ add-randr12-capplet.patch 31 Jan 2008 18:24:27 -0000 1.4
@@ -1,6 +1,6 @@
-diff -up /dev/null gnome-control-center-2.21.5/capplets/display/edid.h
---- /dev/null 2008-01-26 11:28:38.229690233 -0500
-+++ gnome-control-center-2.21.5/capplets/display/edid.h 2008-01-29 16:47:04.000000000 -0500
+diff -up /dev/null gnome-control-center-2.21.90/capplets/display/edid.h
+--- /dev/null 2008-01-30 11:34:25.225700292 -0500
++++ gnome-control-center-2.21.90/capplets/display/edid.h 2008-01-31 13:18:09.000000000 -0500
@@ -0,0 +1,169 @@
+typedef unsigned char uchar;
+typedef struct MonitorInfo MonitorInfo;
@@ -171,9 +171,9 @@
+
+MonitorInfo *decode_edid (const uchar *data);
+char * make_display_name (const MonitorInfo *info);
-diff -up /dev/null gnome-control-center-2.21.5/capplets/display/foo-marshal.c
---- /dev/null 2008-01-26 11:28:38.229690233 -0500
-+++ gnome-control-center-2.21.5/capplets/display/foo-marshal.c 2008-01-29 16:47:04.000000000 -0500
+diff -up /dev/null gnome-control-center-2.21.90/capplets/display/foo-marshal.c
+--- /dev/null 2008-01-30 11:34:25.225700292 -0500
++++ gnome-control-center-2.21.90/capplets/display/foo-marshal.c 2008-01-31 13:18:09.000000000 -0500
@@ -0,0 +1,279 @@
+
+#include <glib-object.h>
@@ -454,9 +454,9 @@
+ data2);
+}
+
-diff -up /dev/null gnome-control-center-2.21.5/capplets/display/edid-parse.c
---- /dev/null 2008-01-26 11:28:38.229690233 -0500
-+++ gnome-control-center-2.21.5/capplets/display/edid-parse.c 2008-01-29 16:47:04.000000000 -0500
+diff -up /dev/null gnome-control-center-2.21.90/capplets/display/edid-parse.c
+--- /dev/null 2008-01-30 11:34:25.225700292 -0500
++++ gnome-control-center-2.21.90/capplets/display/edid-parse.c 2008-01-31 13:18:09.000000000 -0500
@@ -0,0 +1,551 @@
+/*
+ * Copyright 2007 Red Hat, Inc.
@@ -1009,9 +1009,9 @@
+
+ return info;
+}
-diff -up /dev/null gnome-control-center-2.21.5/capplets/display/foo-marshal.h
---- /dev/null 2008-01-26 11:28:38.229690233 -0500
-+++ gnome-control-center-2.21.5/capplets/display/foo-marshal.h 2008-01-29 16:47:04.000000000 -0500
+diff -up /dev/null gnome-control-center-2.21.90/capplets/display/foo-marshal.h
+--- /dev/null 2008-01-30 11:34:25.225700292 -0500
++++ gnome-control-center-2.21.90/capplets/display/foo-marshal.h 2008-01-31 13:18:09.000000000 -0500
@@ -0,0 +1,63 @@
+
+#ifndef __foo_marshal_MARSHAL_H__
@@ -1076,10 +1076,10 @@
+
+#endif /* __foo_marshal_MARSHAL_H__ */
+
-diff -up /dev/null gnome-control-center-2.21.5/capplets/display/scrollarea.c
---- /dev/null 2008-01-26 11:28:38.229690233 -0500
-+++ gnome-control-center-2.21.5/capplets/display/scrollarea.c 2008-01-29 16:47:04.000000000 -0500
-@@ -0,0 +1,1900 @@
+diff -up /dev/null gnome-control-center-2.21.90/capplets/display/scrollarea.c
+--- /dev/null 2008-01-30 11:34:25.225700292 -0500
++++ gnome-control-center-2.21.90/capplets/display/scrollarea.c 2008-01-31 13:18:09.000000000 -0500
+@@ -0,0 +1,1902 @@
+#include <gdk/gdkprivate.h> /* For GDK_PARENT_RELATIVE_BG */
+#include "scrollarea.h"
+#include "foo-marshal.h"
@@ -2068,6 +2068,8 @@
+ input_type = FOO_BUTTON_RELEASE;
+ else if (event->type == GDK_MOTION_NOTIFY)
+ input_type = FOO_MOTION;
++ else
++ return;
+
+ process_event (scroll_area, input_type, x, y);
+}
@@ -2980,10 +2982,10 @@
+}
+
+#endif
-diff -up /dev/null gnome-control-center-2.21.5/capplets/display/monitor-db.c
---- /dev/null 2008-01-26 11:28:38.229690233 -0500
-+++ gnome-control-center-2.21.5/capplets/display/monitor-db.c 2008-01-29 16:47:04.000000000 -0500
-@@ -0,0 +1,637 @@
+diff -up /dev/null gnome-control-center-2.21.90/capplets/display/monitor-db.c
+--- /dev/null 2008-01-30 11:34:25.225700292 -0500
++++ gnome-control-center-2.21.90/capplets/display/monitor-db.c 2008-01-31 13:18:09.000000000 -0500
+@@ -0,0 +1,757 @@
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
@@ -3032,71 +3034,59 @@
+typedef struct Parser Parser;
+
+static void
-+emit_configurations (Configuration **configs,
-+ GString *string)
++emit_configuration (Configuration *config,
++ GString *string)
+{
-+ int i;
-+
-+ for (i = 0; configs[i] != NULL; ++i)
++ int j;
++
++ g_string_append_printf (string, "<configuration>\n");
++
++ for (j = 0; config->outputs[j] != NULL; ++j)
+ {
-+ Configuration *config = configs[i];
-+ int j;
-+
-+ g_string_append_printf (string, "<configuration>\n");
++ Output *output = config->outputs[j];
++
++ g_string_append_printf (
++ string, " <output name=\"%s\">\n", output->name);
+
-+ for (j = 0; config->outputs[j] != NULL; ++j)
++ if (output->connected && *output->vendor != '\0')
+ {
-+ Output *output = config->outputs[j];
-+
+ g_string_append_printf (
-+ string, " <output name=\"%s\">\n", output->name);
-+
-+ if (output->connected && *output->vendor != '\0')
-+ {
-+ g_string_append_printf (
-+ string, " <vendor>%s</vendor>\n", output->vendor);
-+ g_string_append_printf (
-+ string, " <product>0x%04x</product>\n", output->product);
-+ g_string_append_printf (
-+ string, " <serial>0x%08x</serial>\n", output->serial);
-+ }
-+
-+ if (output->on)
-+ {
-+ g_string_append_printf (
-+ string, " <width>%d</width>\n", output->width);
-+ g_string_append_printf (
-+ string, " <height>%d</height>\n", output->height);
-+ g_string_append_printf (
-+ string, " <rate>%d</rate>\n", output->rate);
-+ g_string_append_printf (
-+ string, " <x>%d</x>\n", output->x);
-+ g_string_append_printf (
-+ string, " <y>%d</y>\n", output->y);
-+ }
-+
-+ g_string_append_printf (string, " </output>\n");
++ string, " <vendor>%s</vendor>\n", output->vendor);
++ g_string_append_printf (
++ string, " <product>0x%04x</product>\n", output->product);
++ g_string_append_printf (
++ string, " <serial>0x%08x</serial>\n", output->serial);
+ }
+
-+ g_string_append_printf (string, "</configuration>\n");
++ /* An unconnected output which is on does not make sense */
++ if (output->connected && output->on)
++ {
++ g_string_append_printf (
++ string, " <width>%d</width>\n", output->width);
++ g_string_append_printf (
++ string, " <height>%d</height>\n", output->height);
++ g_string_append_printf (
++ string, " <rate>%d</rate>\n", output->rate);
++ g_string_append_printf (
++ string, " <x>%d</x>\n", output->x);
++ g_string_append_printf (
++ string, " <y>%d</y>\n", output->y);
++ }
++
++ g_string_append_printf (string, " </output>\n");
+ }
++
++ g_string_append_printf (string, "</configuration>\n");
+}
+
-+gboolean
-+configurations_write (Configuration **configs,
-+ const gchar *filename,
-+ GError **error)
++static void
++emit_configurations (Configuration **configs,
++ GString *string)
+{
-+ GString *output = g_string_new ("");
-+ gboolean result;
-+
-+ emit_configurations (configs, output);
-+
-+ result = g_file_set_contents (filename, output->str, -1, error);
-+
-+ g_string_free (output, TRUE);
++ int i;
+
-+ return result;
++ for (i = 0; configs[i] != NULL; ++i)
++ emit_configuration (configs[i], string);
+}
+
+void
@@ -3201,7 +3191,7 @@
+ */
+ g_warning ("Malformed monitor configuration file");
+
-+ parser->output->name = g_strdup ("VGA");
++ parser->output->name = g_strdup ("default");
+ }
+ parser->output->connected = FALSE;
+ parser->output->on = FALSE;
@@ -3415,9 +3405,6 @@
+ return result;
+}
+
-+static gboolean configuration_match (Configuration *c1,
-+ Configuration *c2);
-+
+Configuration *
+configuration_new_current (RWScreen *screen)
+{
@@ -3426,39 +3413,29 @@
+ int i;
+ RWOutput **rw_outputs = rw_screen_list_outputs (screen);
+
++#if 0
+ g_print ("New configuration:\n");
++#endif
+
+ for (i = 0; rw_outputs[i] != NULL; ++i)
+ {
+ RWOutput *rw_output = rw_outputs[i];
+ Output *output = g_new0 (Output, 1);
++ RWMode *mode = NULL;
++ const guint8 *edid_data = rw_output_get_edid_data (rw_output);
+ RWCrtc *crtc;
-+
++
+ output->name = g_strdup (rw_output_get_name (rw_output));
++ output->connected = rw_output_is_connected (rw_output);
+
-+ crtc = rw_output_get_crtc (rw_output);
-+ if (crtc)
++ if (!output->connected)
+ {
-+ RWMode *mode = rw_crtc_get_current_mode (crtc);
-+
-+ output->on = TRUE;
-+ output->width = rw_mode_get_width (mode);
-+ output->height = rw_mode_get_height (mode);
-+ output->rate = rw_mode_get_freq (mode);
-+
-+ rw_crtc_get_position (crtc, &output->x, &output->y);
-+
-+ g_print ("new output %s %d %d\n", output->name, output->width, output->height);
++ output->width = -1;
++ output->height = -1;
++ output->rate = -1;
+ }
-+
-+ output->connected = rw_output_is_connected (rw_output);
-+
-+ g_print (" Output %s is %sconnected\n", output->name, output->connected? "" : "not ");
-+
-+ if (output->connected)
++ else
+ {
-+ const guchar *edid_data = rw_output_get_edid_data (rw_output);
-+
+ if (edid_data)
+ {
+ MonitorInfo *info = decode_edid (edid_data);
@@ -3468,7 +3445,8 @@
+
+ output->product = info->product_code;
+ output->serial = info->serial_number;
-+
++ output->aspect = info->aspect_ratio;
++
+ g_free (info);
+ }
+ else
@@ -3477,14 +3455,62 @@
+ output->product = 0;
+ output->serial = 0;
+ }
-+ }
-+ else
-+ {
-+ output->vendor[0] = '\0';
-+ output->serial = 0;
-+ output->product = 0;
++
++ crtc = rw_output_get_crtc (rw_output);
++
++ if (crtc)
++ {
++ output->on = TRUE;
++
++ mode = rw_crtc_get_current_mode (crtc);
++
++ output->width = rw_mode_get_width (mode);
++ output->height = rw_mode_get_height (mode);
++ output->rate = rw_mode_get_freq (mode);
++ }
++ else
++ {
++ output->on = FALSE;
++ }
++
++ /* Get preferred size for the monitor */
++ mode = rw_output_get_preferred_mode (rw_output);
++
++ if (!mode)
++ {
++ RWMode **modes = rw_output_list_modes (rw_output);
++
++ /* FIXME: we should pick the "best" mode here, where best is
++ * sorted wrt
++ *
++ * - closest aspect ratio
++ * - mode area
++ * - refresh rate
++ * - We may want to extend randrwrap so that get_preferred
++ * returns that - although that could also depend on
++ * the crtc.
++ */
++ if (modes[0])
++ mode = modes[0];
++ }
++
++ if (mode)
++ {
++ output->pref_width = rw_mode_get_width (mode);
++ output->pref_height = rw_mode_get_height (mode);
++ }
++ else
++ {
++ /* Pick some random numbers. This should basically never happen */
++ output->pref_width = 1024;
++ output->pref_height = 768;
++ }
+ }
+
++#if 0
++ g_print (" Output %s is %sconnected\n", output->name, output->connected? "" : "not ");
++#endif
++
+ g_ptr_array_add (a, output);
+ }
+
@@ -3566,8 +3592,6 @@
+
+ if (output1->connected != output2->connected)
+ return FALSE;
-+
-+ g_print ("matched %s to %s\n", output1->name, output2->name);
+
+ return TRUE;
+}
@@ -3588,9 +3612,31 @@
+ return NULL;
+}
+
-+static gboolean
-+configuration_match (Configuration *c1,
-+ Configuration *c2)
++static void
++print_configuration (Configuration *c1)
++{
++ int i;
++
++ for (i = 0; c1->outputs[i] != NULL; ++i)
++ {
++ Output *output = c1->outputs[i];
++
++ g_print (" output %s\n", output->name);
++ g_print (" connected: %s (%s-%04x-%08x)\n",
++ output->connected? "yes" : "no",
++ strcmp (output->vendor, "") == 0? "none" : output->vendor,
++ output->product, output->serial);
++ g_print (" on %s (%d %d %d %d - %d)\n",
++ output->on? "yes" : "no",
++ output->x, output->y,
++ output->width,
++ output->height,
++ output->rate);
++ }
++}
++
++gboolean
++configuration_match (Configuration *c1, Configuration *c2)
+{
+ int i;
+
@@ -3604,6 +3650,16 @@
+ return FALSE;
+ }
+
++#if 0
++ g_print ("found existing config:\n");
++
++ print_configuration (c1);
++
++ g_print ("which is equal to current configuration:\n");
++
++ print_configuration (c2);
++#endif
++
+ return TRUE;
+}
+
@@ -3621,10 +3677,76 @@
+
+ return NULL;
+}
-diff -up /dev/null gnome-control-center-2.21.5/capplets/display/monitor-db.h
---- /dev/null 2008-01-26 11:28:38.229690233 -0500
-+++ gnome-control-center-2.21.5/capplets/display/monitor-db.h 2008-01-29 16:47:04.000000000 -0500
-@@ -0,0 +1,53 @@
++
++/* Database management */
++static gboolean
++do_free (gpointer data)
++{
++ g_free (data);
++ return FALSE;
++}
++
++static gchar *
++idle_free (gchar *s)
++{
++ g_idle_add (do_free, s);
++
++ return s;
++}
++
++static const gchar *
++get_filename (void)
++{
++ return idle_free (
++ g_build_filename (
++ g_get_home_dir(), ".gnome2", "monitors.xml", NULL));
++}
++
++gboolean
++configurations_write (Configuration **configs,
++ const gchar *filename,
++ GError **error)
++{
++ GString *output = g_string_new ("");
++ gboolean result;
++
++ emit_configurations (configs, output);
++
++ result = g_file_set_contents (filename, output->str, -1, error);
++
++ g_string_free (output, TRUE);
++
++ return result;
++}
++
++gboolean
++configuration_save (Configuration *configuration, GError **err)
++{
++ Configuration **configurations;
++ GString *output = g_string_new("");
++ int i;
++
++ configurations = configurations_read (get_filename(), NULL);
++
++ if (configurations)
++ {
++ for (i = 0; configurations[i] != NULL; ++i)
++ {
++ if (!configuration_match (configurations[i], configuration))
++ emit_configuration (configurations[i], output);
++ }
++ }
++
++ emit_configuration (configuration, output);
++
++ configurations_free (configurations);
++
++ return g_file_set_contents (get_filename(), output->str, -1, err);
++}
+diff -up /dev/null gnome-control-center-2.21.90/capplets/display/monitor-db.h
+--- /dev/null 2008-01-30 11:34:25.225700292 -0500
++++ gnome-control-center-2.21.90/capplets/display/monitor-db.h 2008-01-31 13:18:09.000000000 -0500
+@@ -0,0 +1,95 @@
+#define I_KNOW_THIS_IS_UNSTABLE_AND_ONLY_IN_FEDORA
+#include <libgnomeui/randrwrap.h>
+#include <glib.h>
@@ -3647,6 +3769,9 @@
+ char vendor[4];
+ guint product;
+ guint serial;
++ double aspect;
++ int pref_width;
++ int pref_height;
+};
+
+struct Configuration
@@ -3654,33 +3779,72 @@
+ Output **outputs;
+};
+
-+Output *output_new (const char *name,
-+ gboolean on,
-+ int width,
-+ int height,
-+ int rate,
-+ gboolean connected,
-+ char vendor[4],
-+ guint product,
-+ guint serial);
-+Configuration *configuration_new (Output **outputs);
++void configuration_free (Configuration *configuration);
++gboolean configuration_save (Configuration *configuration,
++ GError **err);
++Configuration *configuration_new_current (RWScreen *screen);
++gboolean configuration_match (Configuration *config1,
++ Configuration *config2);
++
++/* Database management */
++Configuration *configuration_find (Configuration **haystack,
++ Configuration *needle);
++Configuration **configurations_add (Configuration **configurations,
++ Configuration *configuration);
+Configuration **configurations_read (const gchar *filename,
+ GError **error);
++void configurations_free (Configuration **configurations);
+gboolean configurations_write (Configuration **configs,
+ const gchar *filename,
+ GError **error);
-+void configuration_free (Configuration *configuration);
-+Configuration **configurations_add (Configuration **configurations,
-+ Configuration *configuration);
-+void configurations_free (Configuration **configurations);
-+void configurations_dump (Configuration **configurations);
-+Configuration *configuration_new_current (RWScreen *screen);
-+Configuration *configuration_find (Configuration **haystack,
-+ Configuration *needle);
+
-diff -up /dev/null gnome-control-center-2.21.5/capplets/display/crtc.h
---- /dev/null 2008-01-26 11:28:38.229690233 -0500
-+++ gnome-control-center-2.21.5/capplets/display/crtc.h 2008-01-29 16:47:04.000000000 -0500
++/* Three different types of settings
++ *
++ * - What the current setup actually *is*
++ * - What the setup *should* be according to the xml file
++ * - What the user is about to set
++ *
++ * A "Configuration" is a mapping from outputs to modes
++ * - It can be saved, which means any similar setups will be
++ * overwritten
++ *
++ * - It can be changed.
++ *
++ * - It can be created from the current X information
++ *
++ * - For each output it will report
++ * - whether the output is on
++ * - whether the output is connected
++ * - what modes are available
++ *
++ * It is possible to apply the best match in the database.
++ *
++ * if (configuration_apply_match (screen, ...))
++ * ;
++ *
++ * Capplet:
++ * - Create new Setup from current
++ * - Allows user to modify it within hardware restrictions
++ * - On apply, saves and pokes
++ * - On hardware changes, replaces setup with new current
++ *
++ * Daemon
++ * - On login, search for match in database, applies
++ * - On poke, search for match in database, applies
++ * - On hardware change
++ * - Get old setup
++ * - Get new setup
++ * - If new setup is in database, apply
++ * - else, list monitors that have changed
++ * - connection status, turn those off
++ */
++
++
++
++
+diff -up /dev/null gnome-control-center-2.21.90/capplets/display/crtc.h
+--- /dev/null 2008-01-30 11:34:25.225700292 -0500
++++ gnome-control-center-2.21.90/capplets/display/crtc.h 2008-01-31 13:18:09.000000000 -0500
@@ -0,0 +1,21 @@
+#include <gtk/gtk.h>
+#define I_KNOW_THIS_IS_UNSTABLE_AND_ONLY_IN_FEDORA
@@ -3703,16 +3867,16 @@
+CrtcAssignment *assign_crtcs (RWScreen *screen,
+ Setting **settings);
+void crtc_assignment_free (CrtcAssignment *assign);
-diff -up /dev/null gnome-control-center-2.21.5/capplets/display/apply.h
---- /dev/null 2008-01-26 11:28:38.229690233 -0500
-+++ gnome-control-center-2.21.5/capplets/display/apply.h 2008-01-29 16:47:04.000000000 -0500
+diff -up /dev/null gnome-control-center-2.21.90/capplets/display/apply.h
+--- /dev/null 2008-01-30 11:34:25.225700292 -0500
++++ gnome-control-center-2.21.90/capplets/display/apply.h 2008-01-31 13:18:09.000000000 -0500
@@ -0,0 +1,2 @@
+/* This should go in g-s-d eventually */
+void apply_stored_configuration (RWScreen *screen);
-diff -up /dev/null gnome-control-center-2.21.5/capplets/display/xrandr-capplet.c
---- /dev/null 2008-01-26 11:28:38.229690233 -0500
-+++ gnome-control-center-2.21.5/capplets/display/xrandr-capplet.c 2008-01-29 16:47:04.000000000 -0500
-@@ -0,0 +1,809 @@
+diff -up /dev/null gnome-control-center-2.21.90/capplets/display/xrandr-capplet.c
+--- /dev/null 2008-01-30 11:34:25.225700292 -0500
++++ gnome-control-center-2.21.90/capplets/display/xrandr-capplet.c 2008-01-31 13:18:09.000000000 -0500
+@@ -0,0 +1,818 @@
+/* Monitor Settings. A preference panel for configuring monitors
+ *
+ * Copyright (C) 2007, 2008 Red Hat, Inc.
@@ -3752,7 +3916,6 @@
+{
+ RWScreen *screen;
+ Configuration *current_configuration;
-+ Configuration **all_configurations;
+ Output *current_output;
+
+ GtkWidget *dialog;
@@ -3806,14 +3969,6 @@
+ return s;
+}
+
-+static const gchar *
-+get_filename (void)
-+{
-+ return idle_free (
-+ g_build_filename (
-+ g_get_home_dir(), ".gnome2", "monitors.xml", NULL));
-+}
-+
+static int
+compare_outputs (const void *p1, const void *p2)
+{
@@ -3828,7 +3983,6 @@
+ gpointer data)
+{
+ Configuration *current;
-+ Configuration *found;
+ App *app = data;
+ int i;
+ Output *best;
@@ -3836,30 +3990,20 @@
+ g_print ("screen changed\n");
+
+ current = configuration_new_current (app->screen);
-+
-+ found = configuration_find (app->all_configurations, current);
-+ if (found)
-+ {
-+ g_print ("config found\n");
-+
-+ configuration_free (current);
+
-+ current = found;
-+ }
-+ else
++ if (app->current_configuration &&
++ configuration_match (current, app->current_configuration))
+ {
-+ g_print ("config not found, adding\n");
-+
-+ app->all_configurations = configurations_add (
-+ app->all_configurations, current);
++ configuration_free (current);
++ return;
+ }
-+
-+ g_assert (configuration_find (app->all_configurations, current));
-+
++
++ if (app->current_configuration)
++ configuration_free (app->current_configuration);
++
+ app->current_configuration = current;
+
+ /* Sort outputs according to X coordinate */
-+
+ for (i = 0; app->current_configuration->outputs[i] != NULL; ++i)
+ ;
+
@@ -3867,7 +4011,6 @@
+ compare_outputs);
+
+ /* Select an output */
-+
+ best = NULL;
+ for (i = 0; app->current_configuration->outputs[i] != NULL; ++i)
+ {
@@ -3933,7 +4076,6 @@
+ GHashTable *table,
+ const char *selected)
+{
-+ /* FIXME: sort the keys */
+ GtkComboBox *box = GTK_COMBO_BOX (widget);
+ GList *keys = g_hash_table_get_keys (table);
+ GList *values = g_hash_table_get_values (table);
@@ -3946,19 +4088,34 @@
+ GtkTreeIter iter;
+ char *resolution = list->data;
+ RWMode *mode = values->data;
-+ int w, h;
-+
-+ w = rw_mode_get_width (mode);
-+ h = rw_mode_get_height (mode);
-+
++
+ gtk_list_store_append (store, &iter);
-+ gtk_list_store_set (store, &iter,
-+ 0, resolution,
-+ 1, w,
-+ 2, h,
-+ 3, rw_mode_get_freq (mode),
-+ 4, w * h,
-+ -1);
++
++ if (mode)
++ {
++ int w, h;
++
++ w = rw_mode_get_width (mode);
++ h = rw_mode_get_height (mode);
++
++ gtk_list_store_set (store, &iter,
++ 0, resolution,
++ 1, w,
++ 2, h,
++ 3, rw_mode_get_freq (mode),
++ 4, w * h,
++ -1);
++ }
++ else
++ {
++ gtk_list_store_set (store, &iter,
++ 0, resolution,
++ 1, 0,
++ 2, 0,
++ 3, 0,
++ 4, 0,
++ -1);
++ }
+
+ if (strcmp (selected, resolution) == 0)
+ {
@@ -4023,6 +4180,11 @@
+ g_strdup_printf ("%d Hz",
+ app->current_output->rate)));
+
++ if (!app->current_output->on)
++ gtk_widget_set_sensitive (app->refresh_combo, FALSE);
++ else
++ gtk_widget_set_sensitive (app->refresh_combo, TRUE);
++
+ g_hash_table_destroy (rates);
+}
+
@@ -4051,12 +4213,16 @@
+
+ g_hash_table_insert (resolutions, resolution, mode);
+ }
++
++ g_hash_table_insert (resolutions, g_strdup ("Off"), NULL);
+
+ /* Add resolutions */
-+ add_keys (app->resolution_combo, resolutions, idle_free (
++ add_keys (app->resolution_combo, resolutions,
++ app->current_output->on ?
++ idle_free (
+ g_strdup_printf ("%d x %d",
+ app->current_output->width,
-+ app->current_output->height)));
++ app->current_output->height)) : "Off");
+
+ g_hash_table_destroy (resolutions);
+}
@@ -4075,6 +4241,8 @@
+
+ sensitive = app->current_output? TRUE : FALSE;
+
++ g_print ("rebuild gui, is on: %d\n", app->current_output->on);
++
+ rebuild_resolution_combo (app);
+ rebuild_rate_combo (app);
+
@@ -4099,8 +4267,10 @@
+
+ if (!width)
+ width = &dummy;
++
+ if (!height)
+ height = &dummy;
++
+ if (!freq)
+ freq = &dummy;
+
@@ -4145,8 +4315,13 @@
+ {
+ app->current_output->width = width;
+ app->current_output->height = height;
-+ }
+
++ if (width == 0 || height == 0)
++ app->current_output->on = FALSE;
++ else
++ app->current_output->on = TRUE;
++ }
++
+ if (app->current_configuration)
+ {
+ x = 0;
@@ -4229,6 +4404,21 @@
+}
+
+static void
++get_geometry (Output *output, int *w, int *h)
++{
++ if (output->on)
++ {
++ *h = output->height;
++ *w = output->width;
++ }
++ else
++ {
++ *h = output->pref_height;
++ *w = output->pref_width;
++ }
++}
++
++static void
+on_area_paint (FooScrollArea *area,
+ cairo_t *cr,
+ GdkRectangle *extent,
@@ -4289,9 +4479,12 @@
+ for (list = connected_outputs; list != NULL; list = list->next)
+ {
+ Output *output = list->data;
++ int w, h;
+
-+ total_pixels += output->width;
-+ max_height = MAX (max_height, output->height);
++ get_geometry (output, &w, &h);
++
++ total_pixels += w;
++ max_height = MAX (max_height, h);
+ }
+
+ scale = (double)available / total_pixels;
@@ -4302,16 +4495,23 @@
+ for (list = connected_outputs; list != NULL; list = list->next)
+ {
+ Output *output = list->data;
-+ int w = output->width * scale + 0.5;
+ PangoLayout *layout = get_display_name (app, output);
++ int w, h;
+
++ get_geometry (output, &w, &h);
++
++ w = w * scale + 0.5;
+ g_print ("%s (%p) geometry %d %d %d\n", output->name, output,
-+ output->width, output->height, output->rate);
++ w, h, output->rate);
+
+ cairo_rectangle (cr, x, MARGIN, w, (int)(
-+ output->height * scale + 0.5));
++ h * scale + 0.5));
++
++ if (output->on)
++ cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, 1.0);
++ else
++ cairo_set_source_rgba (cr, 0.5, 0.5, 0.5, 1.0);
+
-+ cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, 1.0);
+ cairo_fill_preserve (cr);
+
+ foo_scroll_area_add_input_from_fill (area, cr, on_output_event,
@@ -4365,30 +4565,10 @@
+static void
+apply (App *app)
+{
-+#if 0
-+ GPtrArray *array = g_ptr_array_new ();
-+#endif
-+
-+ g_print ("apply\n");
-+
-+ if (configurations_write (app->all_configurations,
-+ get_filename(), NULL))
-+ {
-+ g_print ("wrote\n");
-+
-+ configurations_dump (app->all_configurations);
-+
-+ apply_stored_configuration (app->screen);
-+
-+ g_print ("done applying\n");
-+ }
++ GError *err = NULL;
+
-+#if 0
-+ g_print ("This is where we should actually set the mode, \n");
-+ g_print ("and if accepted, write the configuration file\n");
-+ g_print ("Well, we should check if the mode is possible\n");
-+ g_print ("write the configuration file and signal gsd to set the mode\n");
-+#endif
++ if (configuration_save (app->current_configuration, &err))
++ apply_stored_configuration (app->screen);
+}
+
+static gboolean
@@ -4405,7 +4585,7 @@
+run_application (App *app)
+{
+#ifndef GLADEDIR
-+#define GLADEDIR ""
++#define GLADEDIR "."
+#endif
+#define GLADE_FILE GLADEDIR "/display-capplet.glade"
+ GladeXML *xml;
@@ -4459,13 +4639,6 @@
+
+ gtk_container_add (GTK_CONTAINER (align), app->area);
+
-+ app->all_configurations = configurations_read (get_filename(), NULL);
-+ if (!app->all_configurations)
-+ {
-+ app->all_configurations = g_malloc (sizeof (gpointer));
-+ *(app->all_configurations) = NULL;
-+ }
-+
+ g_timeout_add (3000, refresh, app);
+
+ on_screen_changed (app->screen, app);
@@ -4522,10 +4695,10 @@
+
+ return 0;
+}
-diff -up /dev/null gnome-control-center-2.21.5/capplets/display/crtc.c
---- /dev/null 2008-01-26 11:28:38.229690233 -0500
-+++ gnome-control-center-2.21.5/capplets/display/crtc.c 2008-01-29 16:47:04.000000000 -0500
-@@ -0,0 +1,291 @@
+diff -up /dev/null gnome-control-center-2.21.90/capplets/display/crtc.c
+--- /dev/null 2008-01-30 11:34:25.225700292 -0500
++++ gnome-control-center-2.21.90/capplets/display/crtc.c 2008-01-31 13:18:09.000000000 -0500
+@@ -0,0 +1,322 @@
+#include <gtk/gtk.h>
+#define I_KNOW_THIS_IS_UNSTABLE_AND_ONLY_IN_FEDORA
+#include <libgnomeui/randrwrap.h>
@@ -4699,13 +4872,17 @@
+void
+crtc_assignment_apply (CrtcAssignment *assign)
+{
-+ GList *crtcs = g_hash_table_get_keys (assign->info);
++ GList *active_crtcs = g_hash_table_get_keys (assign->info);
++ RWCrtc **all_crtcs = rw_screen_list_crtcs (assign->screen);
+ GList *list;
+ int width, height;
+ GTimer *timer;
-+
-+ width = height = 0;
-+ for (list = crtcs; list != NULL; list = list->next)
++ int i;
++ int min_width, max_width, min_height, max_height;
++
++ /* Compute size of the screen */
++ width = height = 1;
++ for (list = active_crtcs; list != NULL; list = list->next)
+ {
+ RWCrtc *crtc = list->data;
+ CrtcInfo *info = g_hash_table_lookup (assign->info, crtc);
@@ -4713,11 +4890,25 @@
+ width = MAX (width, info->x + rw_mode_get_width (info->mode));
+ height = MAX (height, info->y + rw_mode_get_height (info->mode));
+ }
++ g_list_free (active_crtcs);
++
++#if 0
++ rw_screen_get_range (
++ assign->screen, &min_width, &max_width, &min_height, &max_height);
+
-+ /* Turn off CRTC's that are displaying outside the new screen area */
-+ for (list = crtcs; list != NULL; list = list->next)
++ width = MAX (min_width, width);
++ width = MIN (max_width, width);
++ height = MAX (min_height, height);
++ height = MIN (max_height, height);
++#endif
++ /* FIXME - get ranges from rw */
++ width = MAX (1024, width);
++ height = MAX (768, height);
++
++ /* Turn off all crtcs currently displaying outside the new screen */
++ for (i = 0; all_crtcs[i] != NULL; ++i)
+ {
-+ RWCrtc *crtc = list->data;
++ RWCrtc *crtc = all_crtcs[i];
+ RWMode *mode = rw_crtc_get_current_mode (crtc);
+ int x, y;
+
@@ -4733,24 +4924,37 @@
+ }
+ }
+
-+ g_list_free (crtcs);
-+
++ /* Turn off all CRTC's that are not in the assignment */
++ for (i = 0; all_crtcs[i] != NULL; ++i)
++ {
++ RWCrtc *crtc = all_crtcs[i];
++
++ if (!g_hash_table_lookup (assign->info, crtc))
++ rw_crtc_set_config (crtc, 0, 0, NULL, NULL, 0);
++ }
++
+ /* FIXME: What do we do about physical size?
+ *
+ * As far as this function is concerned, probably just pass the problem up to
-+ * the callers. There, the best possibility might be to pick the sum of physical
-+ * sizes, but the reality is that the physical size of an X screen is a meaningless
-+ * concept in a randr 1.2 enabled world.
++ * the callers. There, the best possibility might be to pick the sum of
++ * physical sizes, but the reality is that the physical size of an X screen is
++ * meaningless concept in a randr 1.2 world.
+ */
+ timer = g_timer_new ();
++ g_print ("setting size to %d %d\n", width, height);
++
+ rw_screen_set_size (assign->screen, width, height, 300, 230);
+
++ gdk_flush ();
++
+ g_print ("time to set screen size: %f\n", g_timer_elapsed (timer, NULL));
+
+ g_timer_reset (timer);
+
+ g_hash_table_foreach (assign->info, configure_crtc, NULL);
+
++ gdk_flush ();
++
+ g_print ("time to configure crtc's: %f\n", g_timer_elapsed (timer, NULL));
+}
+
@@ -4817,9 +5021,9 @@
+ return NULL;
+ }
+}
-diff -up /dev/null gnome-control-center-2.21.5/capplets/display/display-capplet.glade
---- /dev/null 2008-01-26 11:28:38.229690233 -0500
-+++ gnome-control-center-2.21.5/capplets/display/display-capplet.glade 2008-01-29 16:47:04.000000000 -0500
+diff -up /dev/null gnome-control-center-2.21.90/capplets/display/display-capplet.glade
+--- /dev/null 2008-01-30 11:34:25.225700292 -0500
++++ gnome-control-center-2.21.90/capplets/display/display-capplet.glade 2008-01-31 13:17:45.000000000 -0500
@@ -0,0 +1,363 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
@@ -5184,9 +5388,9 @@
+</widget>
+
+</glade-interface>
-diff -up /dev/null gnome-control-center-2.21.5/capplets/display/scrollarea.h
---- /dev/null 2008-01-26 11:28:38.229690233 -0500
-+++ gnome-control-center-2.21.5/capplets/display/scrollarea.h 2008-01-29 16:47:04.000000000 -0500
+diff -up /dev/null gnome-control-center-2.21.90/capplets/display/scrollarea.h
+--- /dev/null 2008-01-30 11:34:25.225700292 -0500
++++ gnome-control-center-2.21.90/capplets/display/scrollarea.h 2008-01-31 13:18:09.000000000 -0500
@@ -0,0 +1,107 @@
+#include <cairo/cairo.h>
+#include <gtk/gtk.h>
@@ -5295,9 +5499,9 @@
+void foo_scroll_area_auto_scroll (FooScrollArea *scroll_area,
+ FooScrollAreaEvent *event);
+void foo_scroll_area_end_auto_scroll (FooScrollArea *scroll_area);
-diff -up /dev/null gnome-control-center-2.21.5/capplets/display/display-name.c
---- /dev/null 2008-01-26 11:28:38.229690233 -0500
-+++ gnome-control-center-2.21.5/capplets/display/display-name.c 2008-01-29 16:47:04.000000000 -0500
+diff -up /dev/null gnome-control-center-2.21.90/capplets/display/display-name.c
+--- /dev/null 2008-01-30 11:34:25.225700292 -0500
++++ gnome-control-center-2.21.90/capplets/display/display-name.c 2008-01-31 13:18:09.000000000 -0500
@@ -0,0 +1,161 @@
+/*
+ * Copyright 2007 Red Hat, Inc.
@@ -5460,9 +5664,9 @@
+
+ return result;
+}
-diff -up gnome-control-center-2.21.5/capplets/display/Makefile.am.add-randr12-capplet gnome-control-center-2.21.5/capplets/display/Makefile.am
---- gnome-control-center-2.21.5/capplets/display/Makefile.am.add-randr12-capplet 2008-01-03 11:22:06.000000000 -0500
-+++ gnome-control-center-2.21.5/capplets/display/Makefile.am 2008-01-29 16:47:04.000000000 -0500
+diff -up gnome-control-center-2.21.90/capplets/display/Makefile.am.add-randr12-capplet gnome-control-center-2.21.90/capplets/display/Makefile.am
+--- gnome-control-center-2.21.90/capplets/display/Makefile.am.add-randr12-capplet 2008-01-29 07:22:35.000000000 -0500
++++ gnome-control-center-2.21.90/capplets/display/Makefile.am 2008-01-31 13:17:45.000000000 -0500
@@ -1,9 +1,27 @@
# This is used in GNOMECC_CAPPLETS_CFLAGS
cappletname = display
@@ -5492,10 +5696,10 @@
gnome_display_properties_LDFLAGS = -export-dynamic
gnome_display_properties_LDADD = \
$(DISPLAY_CAPPLET_LIBS) \
-diff -up /dev/null gnome-control-center-2.21.5/capplets/display/apply.c
---- /dev/null 2008-01-26 11:28:38.229690233 -0500
-+++ gnome-control-center-2.21.5/capplets/display/apply.c 2008-01-29 16:47:04.000000000 -0500
-@@ -0,0 +1,178 @@
+diff -up /dev/null gnome-control-center-2.21.90/capplets/display/apply.c
+--- /dev/null 2008-01-30 11:34:25.225700292 -0500
++++ gnome-control-center-2.21.90/capplets/display/apply.c 2008-01-31 13:18:09.000000000 -0500
+@@ -0,0 +1,200 @@
+#include "crtc.h"
+#include "monitor-db.h"
+
@@ -5550,7 +5754,7 @@
+ RWMode **modes = rw_output_list_modes (rw_output);
+ int i;
+
-+ if (!output->connected)
++ if (!output->connected || !output->on)
+ {
+ g_print ("%s is not connected\n", output->name);
+ push (settings, rw_output, NULL, 0, 0);
@@ -5574,18 +5778,18 @@
+ rw_mode_get_width (mode),
+ rw_mode_get_height (mode),
+ rw_mode_get_freq (mode));
-+
++
+ if (rw_mode_get_width (mode) == output->width &&
+ rw_mode_get_height (mode) == output->height &&
+ rw_mode_get_freq (mode) == output->rate)
+ {
+ push (settings, rw_output, mode, output->x, 0);
-+
++
+ result = foreach_setting_list (
+ screen, settings, outputs + 1, func, data);
-+
++
+ pop (settings);
-+
++
+ if (result)
+ break;
+ }
@@ -5593,8 +5797,6 @@
+ }
+ }
+
-+ g_print ("returning %d\n", result);
-+
+ return result;
+}
+
@@ -5674,3 +5876,27 @@
+
+ g_free (file);
+}
++
++/* Some potentially useful code */
++
++#if 0
++ found = configuration_find (app->all_configurations, current);
++ if (found)
++ {
++ g_print ("config found\n");
++
++ configuration_free (current);
++
++ current = found;
++ }
++ else
++ {
++ g_print ("config not found, adding\n");
++
++ app->all_configurations = configurations_add (
++ app->all_configurations, current);
++ }
++
++ g_assert (configuration_find (app->all_configurations, current));
++
++#endif
Index: control-center.spec
===================================================================
RCS file: /cvs/pkgs/rpms/control-center/devel/control-center.spec,v
retrieving revision 1.331
retrieving revision 1.332
diff -u -r1.331 -r1.332
--- control-center.spec 29 Jan 2008 21:59:52 -0000 1.331
+++ control-center.spec 31 Jan 2008 18:24:27 -0000 1.332
@@ -22,7 +22,7 @@
Summary: GNOME Control Center
Name: control-center
Version: 2.21.90
-Release: 2%{?dist}
+Release: 3%{?dist}
Epoch: 1
License: GPLv2+ and GFDL
Group: User Interface/Desktops
@@ -349,6 +349,9 @@
%dir %{_datadir}/gnome-control-center/keybindings
%changelog
+* Thu Jan 29 2008 Soren Sandmann <sandmann at redhat.com> - 2.21.90-3
+- Update randr capplet
+
* Tue Jan 29 2008 Soren Sandmann <sandmann at redhat.com> - 2.21.90-2
- Various updates to randr applet
- Previous message (by thread): rpms/syslog-ng/F-7 .cvsignore, 1.14, 1.15 sources, 1.14, 1.15 syslog-ng.spec, 1.28, 1.29 logrotation-bug-2.0.7.patch, 1.1, NONE
- Next message (by thread): rpms/bug-buddy/devel c++.patch,1.2,1.3
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list