packages: pulseaudio/pulseaudio-xcb.patch (NEW) - fixes build with new xcb-...
megabajt
megabajt at pld-linux.org
Sat May 28 14:49:47 CEST 2011
Author: megabajt Date: Sat May 28 12:49:47 2011 GMT
Module: packages Tag: HEAD
---- Log message:
- fixes build with new xcb-util (patch from pulseaudio git)
---- Files affected:
packages/pulseaudio:
pulseaudio-xcb.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: packages/pulseaudio/pulseaudio-xcb.patch
diff -u /dev/null packages/pulseaudio/pulseaudio-xcb.patch:1.1
--- /dev/null Sat May 28 14:49:47 2011
+++ packages/pulseaudio/pulseaudio-xcb.patch Sat May 28 14:49:42 2011
@@ -0,0 +1,207 @@
+From 88e6078f3b74002c58b69f8b69f6c043d65ef80b Mon Sep 17 00:00:00 2001
+From: Maciej Grela <maciej.grela at gmail.com>
+Date: Tue, 29 Mar 2011 22:56:28 +0159
+Subject: [PATCH] x11: Fix build errors with newest xcb-util.
+
+The xcb_atom_get functions were removed from xcb-util. Changed these to
+xcb_intern_atom/xcb_intern_atom_reply. Also, STRING is now
+XCB_ATOM_STRING.
+---
+ src/pulsecore/x11prop.c | 26 +++++++++++++++++---------
+ 1 files changed, 17 insertions(+), 9 deletions(-)
+
+diff --git a/src/pulsecore/x11prop.c b/src/pulsecore/x11prop.c
+index 8df3278..99ea55d 100644
+--- a/src/pulsecore/x11prop.c
++++ b/src/pulsecore/x11prop.c
+@@ -49,28 +49,34 @@ static xcb_screen_t *screen_of_display(xcb_connection_t *xcb, int screen) {
+
+ void pa_x11_set_prop(xcb_connection_t *xcb, int screen, const char *name, const char *data) {
+ xcb_screen_t *xs;
+- xcb_atom_t a;
++ xcb_intern_atom_cookie_t cookie;
++ xcb_intern_atom_reply_t *reply;
+
+ pa_assert(xcb);
+ pa_assert(name);
+ pa_assert(data);
+
+ if ((xs = screen_of_display(xcb, screen))) {
+- a = xcb_atom_get(xcb, name);
+- xcb_change_property(xcb, XCB_PROP_MODE_REPLACE, xs->root, a, STRING, PA_XCB_FORMAT, (int) strlen(data), (const void*) data);
++ cookie = xcb_intern_atom(xcb, 0, strlen(name), name);
++ reply = xcb_intern_atom_reply(xcb, cookie, NULL);
++
++ xcb_change_property(xcb, XCB_PROP_MODE_REPLACE, xs->root, reply->atom, XCB_ATOM_STRING, PA_XCB_FORMAT, (int) strlen(data), (const void*) data);
+ }
+ }
+
+ void pa_x11_del_prop(xcb_connection_t *xcb, int screen, const char *name) {
+ xcb_screen_t *xs;
+- xcb_atom_t a;
++ xcb_intern_atom_cookie_t cookie;
++ xcb_intern_atom_reply_t *reply;
+
+ pa_assert(xcb);
+ pa_assert(name);
+
+ if ((xs = screen_of_display(xcb, screen))) {
+- a = xcb_atom_get(xcb, name);
+- xcb_delete_property(xcb, xs->root, a);
++ cookie = xcb_intern_atom(xcb, 0, strlen(name), name);
++ reply = xcb_intern_atom_reply(xcb, cookie, NULL);
++
++ xcb_delete_property(xcb, xs->root, reply->atom);
+ }
+ }
+
+@@ -80,7 +86,8 @@ char* pa_x11_get_prop(xcb_connection_t *xcb, int screen, const char *name, char
+ xcb_get_property_cookie_t req;
+ xcb_get_property_reply_t* prop = NULL;
+ xcb_screen_t *xs;
+- xcb_atom_t a;
++ xcb_intern_atom_cookie_t cookie;
++ xcb_intern_atom_reply_t *reply;
+
+ pa_assert(xcb);
+ pa_assert(name);
+@@ -98,9 +105,10 @@ char* pa_x11_get_prop(xcb_connection_t *xcb, int screen, const char *name, char
+ xs = screen_of_display(xcb, 0);
+
+ if (xs) {
+- a = xcb_atom_get(xcb, name);
++ cookie = xcb_intern_atom(xcb, 0, strlen(name), name);
++ reply = xcb_intern_atom_reply(xcb, cookie, NULL);
+
+- req = xcb_get_property(xcb, 0, xs->root, a, STRING, 0, (uint32_t)(l-1));
++ req = xcb_get_property(xcb, 0, xs->root, reply->atom, XCB_ATOM_STRING, 0, (uint32_t)(l-1));
+ prop = xcb_get_property_reply(xcb, req, NULL);
+
+ if (!prop)
+--
+1.6.3.3
+
+From adb16f9ff42008c5b8f76133d8879fc15a82533f Mon Sep 17 00:00:00 2001
+From: Arnaud Fontaine <arnau at debian.org>
+Date: Tue, 29 Mar 2011 22:56:28 +0159
+Subject: [PATCH] x11: More XCB fixes.
+
+Commit 65ef80b fixed building with xcb-util >= 0.3.8, but the reply is never
+checked (possible SIGSEGV if the reply is NULL) nor freed (memory leak at each
+call of the functions).
+
+Also, remove include and dependencies on xcb-atom, as it was only meaningful
+for xcb_atom_get() and STRING, and depend instead on xcb >= 1.6 for
+XCB_ATOM_STRING.
+---
+ configure.ac | 2 +-
+ src/pulsecore/x11prop.c | 38 +++++++++++++++++++++++++-------------
+ 2 files changed, 26 insertions(+), 14 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 980d148..76cf7e9 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -591,7 +591,7 @@ AC_ARG_ENABLE([x11],
+ [x11=auto])
+
+ if test "x${x11}" != xno ; then
+- PKG_CHECK_MODULES(X11, [ x11-xcb ice sm xtst xcb-atom ],
++ PKG_CHECK_MODULES(X11, [ x11-xcb xcb >= 1.6 ice sm xtst ],
+ HAVE_X11=1,
+ [
+ HAVE_X11=0
+diff --git a/src/pulsecore/x11prop.c b/src/pulsecore/x11prop.c
+index 99ea55d..baf5b01 100644
+--- a/src/pulsecore/x11prop.c
++++ b/src/pulsecore/x11prop.c
+@@ -30,7 +30,6 @@
+ #include <pulsecore/macro.h>
+
+ #include <xcb/xproto.h>
+-#include <xcb/xcb_atom.h>
+
+ #define PA_XCB_FORMAT 8
+
+@@ -49,7 +48,6 @@ static xcb_screen_t *screen_of_display(xcb_connection_t *xcb, int screen) {
+
+ void pa_x11_set_prop(xcb_connection_t *xcb, int screen, const char *name, const char *data) {
+ xcb_screen_t *xs;
+- xcb_intern_atom_cookie_t cookie;
+ xcb_intern_atom_reply_t *reply;
+
+ pa_assert(xcb);
+@@ -57,26 +55,36 @@ void pa_x11_set_prop(xcb_connection_t *xcb, int screen, const char *name, const
+ pa_assert(data);
+
+ if ((xs = screen_of_display(xcb, screen))) {
+- cookie = xcb_intern_atom(xcb, 0, strlen(name), name);
+- reply = xcb_intern_atom_reply(xcb, cookie, NULL);
++ reply = xcb_intern_atom_reply(xcb,
++ xcb_intern_atom(xcb, 0, strlen(name), name),
++ NULL);
+
+- xcb_change_property(xcb, XCB_PROP_MODE_REPLACE, xs->root, reply->atom, XCB_ATOM_STRING, PA_XCB_FORMAT, (int) strlen(data), (const void*) data);
++ if (reply) {
++ xcb_change_property(xcb, XCB_PROP_MODE_REPLACE, xs->root, reply->atom,
++ XCB_ATOM_STRING, PA_XCB_FORMAT,
++ (int) strlen(data), (const void*) data);
++
++ free(reply);
++ }
+ }
+ }
+
+ void pa_x11_del_prop(xcb_connection_t *xcb, int screen, const char *name) {
+ xcb_screen_t *xs;
+- xcb_intern_atom_cookie_t cookie;
+ xcb_intern_atom_reply_t *reply;
+
+ pa_assert(xcb);
+ pa_assert(name);
+
+ if ((xs = screen_of_display(xcb, screen))) {
+- cookie = xcb_intern_atom(xcb, 0, strlen(name), name);
+- reply = xcb_intern_atom_reply(xcb, cookie, NULL);
+-
+- xcb_delete_property(xcb, xs->root, reply->atom);
++ reply = xcb_intern_atom_reply(xcb,
++ xcb_intern_atom(xcb, 0, strlen(name), name),
++ NULL);
++
++ if (reply) {
++ xcb_delete_property(xcb, xs->root, reply->atom);
++ free(reply);
++ }
+ }
+ }
+
+@@ -86,7 +94,6 @@ char* pa_x11_get_prop(xcb_connection_t *xcb, int screen, const char *name, char
+ xcb_get_property_cookie_t req;
+ xcb_get_property_reply_t* prop = NULL;
+ xcb_screen_t *xs;
+- xcb_intern_atom_cookie_t cookie;
+ xcb_intern_atom_reply_t *reply;
+
+ pa_assert(xcb);
+@@ -105,10 +112,15 @@ char* pa_x11_get_prop(xcb_connection_t *xcb, int screen, const char *name, char
+ xs = screen_of_display(xcb, 0);
+
+ if (xs) {
+- cookie = xcb_intern_atom(xcb, 0, strlen(name), name);
+- reply = xcb_intern_atom_reply(xcb, cookie, NULL);
++ reply = xcb_intern_atom_reply(xcb,
++ xcb_intern_atom(xcb, 0, strlen(name), name),
++ NULL);
++
++ if (!reply)
++ goto finish;
+
+ req = xcb_get_property(xcb, 0, xs->root, reply->atom, XCB_ATOM_STRING, 0, (uint32_t)(l-1));
++ free(reply);
+ prop = xcb_get_property_reply(xcb, req, NULL);
+
+ if (!prop)
+--
+1.6.3.3
+
================================================================
More information about the pld-cvs-commit
mailing list