File build-with-glib-231.diff of Package libQtWebKit4
--- configure.ac
+++ configure.ac
@@ -111,6 +111,9 @@
AC_CHECK_HEADERS([pthread.h],
AC_DEFINE([HAVE_PTHREAD_H],[1],[Define if pthread exists]),
AC_MSG_ERROR([pthread support is required to build WebKit]))
+AC_CHECK_LIB(pthread, pthread_rwlock_init,
+ AC_DEFINE([HAVE_PTHREAD_RWLOCK],[1],[Define if pthread rwlock is present]),
+ AC_MSG_WARN([pthread rwlock support is not available]))
fi
# check for libjpeg the way Gtk does it.
--- Source/JavaScriptCore/GNUmakefile.list.am
+++ Source/JavaScriptCore/GNUmakefile.list.am
@@ -438,7 +438,6 @@
Source/JavaScriptCore/wtf/gobject/GRefPtr.h \
Source/JavaScriptCore/wtf/gobject/GTypedefs.h \
Source/JavaScriptCore/wtf/gtk/MainThreadGtk.cpp \
- Source/JavaScriptCore/wtf/gtk/ThreadingGtk.cpp \
Source/JavaScriptCore/wtf/HashCountedSet.h \
Source/JavaScriptCore/wtf/HashFunctions.h \
Source/JavaScriptCore/wtf/HashIterators.h \
--- Source/JavaScriptCore/wtf/gobject/GOwnPtr.cpp
+++ Source/JavaScriptCore/wtf/gobject/GOwnPtr.cpp
@@ -37,18 +37,6 @@
g_list_free(ptr);
}
-template <> void freeOwnedGPtr<GCond>(GCond* ptr)
-{
- if (ptr)
- g_cond_free(ptr);
-}
-
-template <> void freeOwnedGPtr<GMutex>(GMutex* ptr)
-{
- if (ptr)
- g_mutex_free(ptr);
-}
-
template <> void freeOwnedGPtr<GPatternSpec>(GPatternSpec* ptr)
{
if (ptr)
--- Source/JavaScriptCore/wtf/gobject/GOwnPtr.h
+++ Source/JavaScriptCore/wtf/gobject/GOwnPtr.h
@@ -35,8 +35,6 @@
template <typename T> inline void freeOwnedGPtr(T* ptr);
template<> void freeOwnedGPtr<GError>(GError*);
template<> void freeOwnedGPtr<GList>(GList*);
-template<> void freeOwnedGPtr<GCond>(GCond*);
-template<> void freeOwnedGPtr<GMutex>(GMutex*);
template<> void freeOwnedGPtr<GPatternSpec>(GPatternSpec*);
template<> void freeOwnedGPtr<GDir>(GDir*);
--- Source/JavaScriptCore/wtf/gobject/GTypedefs.h
+++ Source/JavaScriptCore/wtf/gobject/GTypedefs.h
@@ -39,7 +39,6 @@
typedef struct _GAsyncResult GAsyncResult;
typedef struct _GCancellable GCancellable;
typedef struct _GCharsetConverter GCharsetConverter;
-typedef struct _GCond GCond;
typedef struct _GDir GDir;
typedef struct _GdkAtom* GdkAtom;
typedef struct _GdkCursor GdkCursor;
@@ -52,7 +51,6 @@
typedef struct _GHashTable GHashTable;
typedef struct _GInputStream GInputStream;
typedef struct _GList GList;
-typedef struct _GMutex GMutex;
typedef struct _GPatternSpec GPatternSpec;
typedef struct _GPollableOutputStream GPollableOutputStream;
typedef struct _GSocketClient GSocketClient;
--- Source/JavaScriptCore/wtf/ThreadingPrimitives.h
+++ Source/JavaScriptCore/wtf/ThreadingPrimitives.h
@@ -44,8 +44,6 @@
#if USE(PTHREADS)
#include <pthread.h>
-#elif PLATFORM(GTK)
-#include "GOwnPtr.h"
#endif
#if PLATFORM(QT)
@@ -66,10 +64,6 @@
typedef void* PlatformReadWriteLock;
#endif
typedef pthread_cond_t PlatformCondition;
-#elif PLATFORM(GTK)
-typedef GOwnPtr<GMutex> PlatformMutex;
-typedef void* PlatformReadWriteLock; // FIXME: Implement.
-typedef GOwnPtr<GCond> PlatformCondition;
#elif PLATFORM(QT)
typedef QT_PREPEND_NAMESPACE(QMutex)* PlatformMutex;
typedef void* PlatformReadWriteLock; // FIXME: Implement.
--- Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp
+++ Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp
@@ -34,4 +34,5 @@
#include <gst/gst.h>
#include <gst/video/video.h>
+#include <wtf/FastAllocBase.h>
static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE("sink",
@@ -106,6 +107,13 @@
sink->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE(sink, WEBKIT_TYPE_VIDEO_SINK, WebKitVideoSinkPrivate);
+#if GLIB_CHECK_VERSION(2, 31, 0)
+ priv->data_cond = WTF::fastNew<GCond>();
+ g_cond_init(priv->data_cond);
+ priv->buffer_mutex = WTF::fastNew<GMutex>();
+ g_mutex_init(priv->buffer_mutex);
+#else
priv->data_cond = g_cond_new();
priv->buffer_mutex = g_mutex_new();
+#endif
}
@@ -243,10 +251,20 @@
if (priv->data_cond) {
+#if GLIB_CHECK_VERSION(2, 31, 0)
+ g_cond_clear(priv->data_cond);
+ WTF::fastDelete(priv->data_cond);
+#else
g_cond_free(priv->data_cond);
+#endif
priv->data_cond = 0;
}
if (priv->buffer_mutex) {
+#if GLIB_CHECK_VERSION(2, 31, 0)
+ g_mutex_clear(priv->buffer_mutex);
+ WTF::fastDelete(priv->buffer_mutex);
+#else
g_mutex_free(priv->buffer_mutex);
+#endif
priv->buffer_mutex = 0;
}