rpms/gdm/devel gdm-2.6.0.8-compensate-for-broken-dpi.patch, 1.1, 1.2 gdm.spec, 1.64, 1.65

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Wed Apr 13 21:47:16 UTC 2005


Update of /cvs/dist/rpms/gdm/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv30495

Modified Files:
	gdm-2.6.0.8-compensate-for-broken-dpi.patch gdm.spec 
Log Message:
- Don't hard code dpi setting to 96.0, but instead look at
  Xft.dpi


gdm-2.6.0.8-compensate-for-broken-dpi.patch:
 Makefile.am           |    2 
 greeter_canvas_item.c |    9 --
 greeter_canvas_text.c |  213 ++++++++++++++++++++++++++++++++++++++++++++++++++
 greeter_canvas_text.h |   33 +++++++
 4 files changed, 252 insertions(+), 5 deletions(-)

Index: gdm-2.6.0.8-compensate-for-broken-dpi.patch
===================================================================
RCS file: /cvs/dist/rpms/gdm/devel/gdm-2.6.0.8-compensate-for-broken-dpi.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- gdm-2.6.0.8-compensate-for-broken-dpi.patch	13 Apr 2005 20:49:58 -0000	1.1
+++ gdm-2.6.0.8-compensate-for-broken-dpi.patch	13 Apr 2005 21:47:13 -0000	1.2
@@ -1,5 +1,5 @@
 --- gdm-2.6.0.8/gui/greeter/greeter_canvas_item.c.compensate-for-broken-dpi	2005-03-04 14:55:39.000000000 -0500
-+++ gdm-2.6.0.8/gui/greeter/greeter_canvas_item.c	2005-04-13 16:14:10.000000000 -0400
++++ gdm-2.6.0.8/gui/greeter/greeter_canvas_item.c	2005-04-13 16:35:09.000000000 -0400
 @@ -15,6 +15,7 @@
  #include "greeter_system.h"
  #include "greeter_canvas_item.h"
@@ -37,14 +37,29 @@
  						     textattr, "",
  						     "x", 0.0,
  						     "y", 0.0,
+--- gdm-2.6.0.8/gui/greeter/Makefile.am.compensate-for-broken-dpi	2003-12-10 16:10:17.000000000 -0500
++++ gdm-2.6.0.8/gui/greeter/Makefile.am	2005-04-13 16:35:09.000000000 -0400
+@@ -31,6 +31,8 @@ gdmgreeter_SOURCES =  \
+ 	greeter.h \
+ 	greeter_action_language.c \
+ 	greeter_action_language.h \
++	greeter_canvas_text.c \
++	greeter_canvas_text.h \
+ 	greeter_canvas_item.c \
+ 	greeter_canvas_item.h \
+ 	greeter_configuration.h \
 --- /dev/null	2005-04-13 10:02:28.377315384 -0400
-+++ gdm-2.6.0.8/gui/greeter/greeter_canvas_text.c	2005-04-13 16:23:24.000000000 -0400
-@@ -0,0 +1,114 @@
++++ gdm-2.6.0.8/gui/greeter/greeter_canvas_text.c	2005-04-13 17:42:18.000000000 -0400
+@@ -0,0 +1,213 @@
++#include <string.h>
++
 +#include "greeter_canvas_text.h"
++
 +#include <libgnomecanvas/gnome-canvas.h>
 +#include <libgnomecanvas/gnome-canvas-text.h>
 +#include <pango/pangoft2.h>
 +
++
 +enum 
 +{
 +  PROP_0,
@@ -92,7 +107,6 @@
 +                            "Markup to render",
 +                            NULL,
 +                            (G_PARAM_READABLE | G_PARAM_WRITABLE)));
-+
 +}
 +
 +static void
@@ -100,45 +114,135 @@
 +{
 +}
 +
++static gdouble
++greeter_canvas_text_get_screen_dpi (GreeterCanvasText *text)
++{
++  GdkDisplay *display;
++  GdkScreen *screen;
++  GdkAtom atom, type;
++  gint resources_length;
++  gchar *resources, *resource, *end;
++  gdouble dpi;
++  static const gdouble default_dpi = 96.0;
++
++  atom = gdk_atom_intern ("RESOURCE_MANAGER", TRUE);
++
++  if (atom == 0)
++    return default_dpi;
++
++  display = 
++      gtk_widget_get_display (GTK_WIDGET (GNOME_CANVAS_ITEM (text)->canvas));
++
++  if (display == NULL)
++    return default_dpi;
++
++  screen = 
++      gtk_widget_get_screen (GTK_WIDGET (GNOME_CANVAS_ITEM (text)->canvas));
++
++  if (screen == NULL)
++    return default_dpi;
++
++  gdk_error_trap_push ();
++  if (!gdk_property_get (gdk_screen_get_root_window (screen),
++                         atom, GDK_TARGET_STRING,
++                         0, G_MAXINT,
++                         FALSE,
++                         &type, NULL, &resources_length,
++                         (guchar **) &resources))
++    {
++      gdk_error_trap_pop ();
++      return default_dpi;
++    }
++
++  gdk_display_sync (display);
++  gdk_error_trap_pop ();
++
++  if (type != GDK_TARGET_STRING)
++    return default_dpi;
++
++  if (resources == NULL)
++    return default_dpi;
++
++  resource = strstr (resources, "Xft.dpi:\t");
++
++  if (resource == NULL)
++    return default_dpi;
++
++  resource += sizeof ("Xft.dpi:\t") - 1;
++
++  dpi = strtod (resource, &end);
++
++  g_assert (end != NULL);
++
++  if ((end == resource) || (*end != '\n'))
++    return default_dpi;
++
++  g_free (resources);
++
++  if (dpi < G_MINDOUBLE)
++    return default_dpi;
++
++  return dpi;
++}
++
 +static void
-+greeter_canvas_text_set_property (GObject            *object,
-+                                  guint               param_id,
-+                                  const GValue       *value,
-+                                  GParamSpec         *pspec)
++greeter_canvas_text_init_layout (GreeterCanvasText *greeter_item)
 +{
 +  GnomeCanvasItem *item;
 +  GnomeCanvasText *text;
 +
-+  item = GNOME_CANVAS_ITEM (object);
-+  text = GNOME_CANVAS_TEXT (object);
++  PangoContext *gtk_context, *context;
++  static PangoFT2FontMap *font_map;
++  gdouble dpi;
 +
-+  if (text->layout == NULL) 
-+    {
-+      PangoContext *gtk_context, *context;
-+      PangoFT2FontMap *font_map;
++  item = GNOME_CANVAS_ITEM (greeter_item);
++  text = GNOME_CANVAS_TEXT (greeter_item);
 +
-+      gtk_context = gtk_widget_get_pango_context (GTK_WIDGET (item->canvas));
++  if (text->layout != NULL) 
++    return;
 +
-+      font_map = (PangoFT2FontMap *) pango_ft2_font_map_new ();
-+      pango_ft2_font_map_set_resolution (font_map, 96.0, 96.0);
-+      context = pango_ft2_font_map_create_context (font_map);
-+      pango_context_set_language (context, 
-+                                  pango_context_get_language (gtk_context));
-+      pango_context_set_base_dir (context,
-+                                  pango_context_get_base_dir (gtk_context));
-+      pango_context_set_font_description (context,
-+                                          pango_context_get_font_description (gtk_context));
-+      text->layout = pango_layout_new (context);
-+      g_object_unref (context);
++  gtk_context = gtk_widget_get_pango_context (GTK_WIDGET (item->canvas));
 +
++  if (font_map == NULL)
++    {
++      font_map = (PangoFT2FontMap *) pango_ft2_font_map_new ();
++      dpi = greeter_canvas_text_get_screen_dpi (greeter_item);
++      pango_ft2_font_map_set_resolution (font_map, dpi, dpi);
 +    }
-+  if (param_id == PROP_TEXT)
-+    g_object_set_property (object, "GnomeCanvasText::text", value);
-+  else if (param_id == PROP_MARKUP)
-+    g_object_set_property (object, "GnomeCanvasText::markup", value);
-+  else
-+    g_assert_not_reached ();
 +
++  context = pango_ft2_font_map_create_context (font_map);
++
++  pango_context_set_language (context, 
++                              pango_context_get_language (gtk_context));
++  pango_context_set_base_dir (context,
++                              pango_context_get_base_dir (gtk_context));
++  pango_context_set_font_description (context,
++                                      pango_context_get_font_description (gtk_context));
++
++  text->layout = pango_layout_new (context);
++  g_object_unref (context);
++}
++
++static void
++greeter_canvas_text_set_property (GObject            *object,
++                                  guint               param_id,
++                                  const GValue       *value,
++                                  GParamSpec         *pspec)
++{
++  switch (param_id)
++    {
++    case PROP_TEXT:
++      greeter_canvas_text_init_layout (GREETER_CANVAS_TEXT (object));
++      g_object_set_property (object, "GnomeCanvasText::text", value);
++      break;
++    case PROP_MARKUP:
++      greeter_canvas_text_init_layout (GREETER_CANVAS_TEXT (object));
++      g_object_set_property (object, "GnomeCanvasText::markup", value);
++      break;
++    default:
++      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
++      break;
++    }
 +}
 +
 +static void
@@ -147,15 +251,21 @@
 +                                  GValue             *value,
 +                                  GParamSpec         *pspec)
 +{
-+  if (param_id == PROP_TEXT)
-+    g_object_get_property (object, "GnomeCanvasText::text", value);
-+  else if (param_id == PROP_MARKUP)
-+    g_object_get_property (object, "GnomeCanvasText::markup", value);
-+  else
-+    g_assert_not_reached ();
++  switch (param_id)
++    {
++    case PROP_TEXT:
++      g_object_get_property (object, "GnomeCanvasText::text", value);
++      break;
++    case PROP_MARKUP:
++      g_object_get_property (object, "GnomeCanvasText::markup", value);
++      break;
++    default:
++      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
++      break;
++    }
 +}
 --- /dev/null	2005-04-13 10:02:28.377315384 -0400
-+++ gdm-2.6.0.8/gui/greeter/greeter_canvas_text.h	2005-04-13 13:48:28.000000000 -0400
++++ gdm-2.6.0.8/gui/greeter/greeter_canvas_text.h	2005-04-13 16:35:09.000000000 -0400
 @@ -0,0 +1,33 @@
 +#ifndef GREETER_CANVAS_TEXT_H
 +#define GREETER_CANVAS_TEXT_H
@@ -190,14 +300,3 @@
 +G_END_DECLS
 +
 +#endif
---- gdm-2.6.0.8/gui/greeter/Makefile.am	2003-12-10 16:10:17.000000000 -0500
-+++ gdm-2.6.0.8/gui/greeter/Makefile.am	2005-04-13 13:45:40.000000000 -0400
-@@ -31,6 +31,8 @@ gdmgreeter_SOURCES =  \
- 	greeter.h \
- 	greeter_action_language.c \
- 	greeter_action_language.h \
-+	greeter_canvas_text.c \
-+	greeter_canvas_text.h \
- 	greeter_canvas_item.c \
- 	greeter_canvas_item.h \
- 	greeter_configuration.h \


Index: gdm.spec
===================================================================
RCS file: /cvs/dist/rpms/gdm/devel/gdm.spec,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -r1.64 -r1.65
--- gdm.spec	13 Apr 2005 20:49:58 -0000	1.64
+++ gdm.spec	13 Apr 2005 21:47:13 -0000	1.65
@@ -16,7 +16,7 @@
 Summary: The GNOME Display Manager.
 Name: gdm
 Version: 2.6.0.8
-Release: 2
+Release: 3
 Epoch: 1
 License: LGPL/GPL
 Group: User Interface/X
@@ -273,6 +273,10 @@
 %attr(1770, root, gdm) %dir %{_localstatedir}/gdm
 
 %changelog
+* Wed Apr 13 2005 Ray Strode <rstrode at redhat.com> 1:2.6.0.8-3
+- Don't hard code dpi setting to 96.0, but instead look at
+  Xft.dpi
+
 * Wed Apr 13 2005 Ray Strode <rstrode at redhat.com> 1:2.6.0.8-2
 - touch /var/lock/subsys/gdm-early-login so gdm gets killed on
   runlevel changes (bug 113107)




More information about the fedora-cvs-commits mailing list