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
1 From b3dd3e7d8e6437cad01df6168003f366d3eb131a Mon Sep 17 00:00:00 2001
2 From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= <olivier.crete@collabora.co.uk>
3 Date: Mon, 3 May 2010 15:00:11 -0400
4 Subject: [PATCH] xvimagesink: Add property for the XV_STACKING port attribute
5  (Maemo specific)
6
7 ---
8  sys/xvimage/xvimagesink.c |   31 +++++++++++++++++++++++++++++--
9  sys/xvimage/xvimagesink.h |    3 ++-
10  2 files changed, 31 insertions(+), 3 deletions(-)
11
12 diff --git a/sys/xvimage/xvimagesink.c b/sys/xvimage/xvimagesink.c
13 index 63f7e77..1a61fe1 100644
14 --- a/sys/xvimage/xvimagesink.c
15 +++ b/sys/xvimage/xvimagesink.c
16 @@ -189,7 +189,8 @@ enum
17    PROP_DRAW_BORDERS,
18    PROP_WINDOW_WIDTH,
19    PROP_WINDOW_HEIGHT,
20 -  PROP_DISABLE_COLORKEY
21 +  PROP_DISABLE_COLORKEY,
22 +  PROP_STACKING
23  };
24  
25  static GstVideoSinkClass *parent_class = NULL;
26 @@ -1443,13 +1444,14 @@ gst_xvimagesink_get_xv_support (GstXvImageSink * xvimagesink,
27  
28    /* Set XV_AUTOPAINT_COLORKEY and XV_DOUBLE_BUFFER and XV_COLORKEY */
29    {
30 -    int count, todo = 4;
31 +    int count, todo = 6;
32      XvAttribute *const attr = XvQueryPortAttributes (xcontext->disp,
33          xcontext->xv_port_id, &count);
34      static const char autopaint[] = "XV_AUTOPAINT_COLORKEY";
35      static const char dbl_buffer[] = "XV_DOUBLE_BUFFER";
36      static const char colorkey[] = "XV_COLORKEY";
37      static const char disable_colorkey[] = "XV_DISABLE_COLORKEY";
38 +    static const char stacking[] = "XV_STACKING";
39  
40      GST_DEBUG_OBJECT (xvimagesink, "Checking %d Xv port attributes", count);
41  
42 @@ -1538,6 +1540,18 @@ gst_xvimagesink_get_xv_support (GstXvImageSink * xvimagesink,
43          xvimagesink->have_disable_colorkey = TRUE;
44  
45          xvimagesink->disable_colorkey_atom = atom;
46 +      } else if (!strcmp (attr[i].name, stacking)) {
47 +        const Atom atom = XInternAtom (xcontext->disp, stacking, False);
48 +       gint stacking_num;
49 +
50 +       GST_LOG_OBJECT (xvimagesink, "Setting Xv stacking order to %d",
51 +                       xvimagesink->stacking);
52 +
53 +        stacking_num = g_atomic_int_get (&xvimagesink->stacking);
54 +        XvSetPortAttribute (xcontext->disp, xcontext->xv_port_id, atom,
55 +            stacking_num);
56 +
57 +       todo--;
58        }
59  
60      XFree (attr);
61 @@ -3325,6 +3339,10 @@ gst_xvimagesink_set_property (GObject * object, guint prop_id,
62        g_atomic_int_set (&xvimagesink->disable_colorkey,
63            g_value_get_boolean (value));
64        break;
65 +    case PROP_STACKING:
66 +      g_atomic_int_set (&xvimagesink->stacking,
67 +          g_value_get_uint (value));
68 +      break;
69      default:
70        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
71        break;
72 @@ -3416,6 +3434,9 @@ gst_xvimagesink_get_property (GObject * object, guint prop_id,
73      case PROP_DISABLE_COLORKEY:
74        g_value_set_boolean (value, xvimagesink->disable_colorkey);
75        break;
76 +    case PROP_STACKING:
77 +      g_value_set_uint (value, xvimagesink->stacking);
78 +      break;
79      default:
80        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
81        break;
82 @@ -3543,6 +3564,7 @@ gst_xvimagesink_init (GstXvImageSink * xvimagesink)
83    xvimagesink->disable_colorkey = FALSE;
84    xvimagesink->disable_colorkey_set = FALSE;
85    xvimagesink->disable_colorkey_atom = None;
86 +  xvimagesink->stacking = 0;
87  
88    /* on 16bit displays this becomes r,g,b = 1,2,3
89     * on 24bit displays this becomes r,g,b = 8,8,16
90 @@ -3723,6 +3745,11 @@ gst_xvimagesink_class_init (GstXvImageSinkClass * klass)
91            "Whether to disable colorkey", FALSE,
92            G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
93  
94 +  g_object_class_install_property (gobject_class, PROP_STACKING,
95 +      g_param_spec_uint ("stacking", "Stacking order",
96 +        "The port stacking order (0=auto, 1=bottom, 2=top", 0, 2, 0,
97 +          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
98 +
99    gobject_class->finalize = gst_xvimagesink_finalize;
100  
101    gstelement_class->change_state =
102 diff --git a/sys/xvimage/xvimagesink.h b/sys/xvimage/xvimagesink.h
103 index ddc0e06..12ac3e9 100644
104 --- a/sys/xvimage/xvimagesink.h
105 +++ b/sys/xvimage/xvimagesink.h
106 @@ -279,7 +279,8 @@ struct _GstXvImageSink {
107    gboolean disable_colorkey;
108    gboolean disable_colorkey_set;
109    Atom disable_colorkey_atom;
110 -  
111 +  gint stacking;
112 +
113    gboolean draw_borders;
114    
115    /* port features */