Added gst-plugins-base-subtitles0.10-0.10.34 for Meego Harmattan 1.2
[mafwsubrenderer] / gst-plugins-base-subtitles0.10 / debian / patches / 0020-xvimagesink-Add-property-for-the-XV_STACKING-port-at.patch
diff --git a/gst-plugins-base-subtitles0.10/debian/patches/0020-xvimagesink-Add-property-for-the-XV_STACKING-port-at.patch b/gst-plugins-base-subtitles0.10/debian/patches/0020-xvimagesink-Add-property-for-the-XV_STACKING-port-at.patch
new file mode 100644 (file)
index 0000000..d533d02
--- /dev/null
@@ -0,0 +1,115 @@
+From b3dd3e7d8e6437cad01df6168003f366d3eb131a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= <olivier.crete@collabora.co.uk>
+Date: Mon, 3 May 2010 15:00:11 -0400
+Subject: [PATCH] xvimagesink: Add property for the XV_STACKING port attribute
+ (Maemo specific)
+
+---
+ sys/xvimage/xvimagesink.c |   31 +++++++++++++++++++++++++++++--
+ sys/xvimage/xvimagesink.h |    3 ++-
+ 2 files changed, 31 insertions(+), 3 deletions(-)
+
+diff --git a/sys/xvimage/xvimagesink.c b/sys/xvimage/xvimagesink.c
+index 63f7e77..1a61fe1 100644
+--- a/sys/xvimage/xvimagesink.c
++++ b/sys/xvimage/xvimagesink.c
+@@ -189,7 +189,8 @@ enum
+   PROP_DRAW_BORDERS,
+   PROP_WINDOW_WIDTH,
+   PROP_WINDOW_HEIGHT,
+-  PROP_DISABLE_COLORKEY
++  PROP_DISABLE_COLORKEY,
++  PROP_STACKING
+ };
+ static GstVideoSinkClass *parent_class = NULL;
+@@ -1443,13 +1444,14 @@ gst_xvimagesink_get_xv_support (GstXvImageSink * xvimagesink,
+   /* Set XV_AUTOPAINT_COLORKEY and XV_DOUBLE_BUFFER and XV_COLORKEY */
+   {
+-    int count, todo = 4;
++    int count, todo = 6;
+     XvAttribute *const attr = XvQueryPortAttributes (xcontext->disp,
+         xcontext->xv_port_id, &count);
+     static const char autopaint[] = "XV_AUTOPAINT_COLORKEY";
+     static const char dbl_buffer[] = "XV_DOUBLE_BUFFER";
+     static const char colorkey[] = "XV_COLORKEY";
+     static const char disable_colorkey[] = "XV_DISABLE_COLORKEY";
++    static const char stacking[] = "XV_STACKING";
+     GST_DEBUG_OBJECT (xvimagesink, "Checking %d Xv port attributes", count);
+@@ -1538,6 +1540,18 @@ gst_xvimagesink_get_xv_support (GstXvImageSink * xvimagesink,
+         xvimagesink->have_disable_colorkey = TRUE;
+         xvimagesink->disable_colorkey_atom = atom;
++      } else if (!strcmp (attr[i].name, stacking)) {
++        const Atom atom = XInternAtom (xcontext->disp, stacking, False);
++      gint stacking_num;
++
++      GST_LOG_OBJECT (xvimagesink, "Setting Xv stacking order to %d",
++                      xvimagesink->stacking);
++
++        stacking_num = g_atomic_int_get (&xvimagesink->stacking);
++        XvSetPortAttribute (xcontext->disp, xcontext->xv_port_id, atom,
++            stacking_num);
++
++      todo--;
+       }
+     XFree (attr);
+@@ -3325,6 +3339,10 @@ gst_xvimagesink_set_property (GObject * object, guint prop_id,
+       g_atomic_int_set (&xvimagesink->disable_colorkey,
+           g_value_get_boolean (value));
+       break;
++    case PROP_STACKING:
++      g_atomic_int_set (&xvimagesink->stacking,
++          g_value_get_uint (value));
++      break;
+     default:
+       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+       break;
+@@ -3416,6 +3434,9 @@ gst_xvimagesink_get_property (GObject * object, guint prop_id,
+     case PROP_DISABLE_COLORKEY:
+       g_value_set_boolean (value, xvimagesink->disable_colorkey);
+       break;
++    case PROP_STACKING:
++      g_value_set_uint (value, xvimagesink->stacking);
++      break;
+     default:
+       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+       break;
+@@ -3543,6 +3564,7 @@ gst_xvimagesink_init (GstXvImageSink * xvimagesink)
+   xvimagesink->disable_colorkey = FALSE;
+   xvimagesink->disable_colorkey_set = FALSE;
+   xvimagesink->disable_colorkey_atom = None;
++  xvimagesink->stacking = 0;
+   /* on 16bit displays this becomes r,g,b = 1,2,3
+    * on 24bit displays this becomes r,g,b = 8,8,16
+@@ -3723,6 +3745,11 @@ gst_xvimagesink_class_init (GstXvImageSinkClass * klass)
+           "Whether to disable colorkey", FALSE,
+           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
++  g_object_class_install_property (gobject_class, PROP_STACKING,
++      g_param_spec_uint ("stacking", "Stacking order",
++       "The port stacking order (0=auto, 1=bottom, 2=top", 0, 2, 0,
++          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
++
+   gobject_class->finalize = gst_xvimagesink_finalize;
+   gstelement_class->change_state =
+diff --git a/sys/xvimage/xvimagesink.h b/sys/xvimage/xvimagesink.h
+index ddc0e06..12ac3e9 100644
+--- a/sys/xvimage/xvimagesink.h
++++ b/sys/xvimage/xvimagesink.h
+@@ -279,7 +279,8 @@ struct _GstXvImageSink {
+   gboolean disable_colorkey;
+   gboolean disable_colorkey_set;
+   Atom disable_colorkey_atom;
+-  
++  gint stacking;
++
+   gboolean draw_borders;
+   
+   /* port features */