]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - wtf/gobject/GRefPtr.cpp
JavaScriptCore-903.tar.gz
[apple/javascriptcore.git] / wtf / gobject / GRefPtr.cpp
index e7cf34bd4ee3bac87405a2f6ee9721d425d68661..1cd22c532b674d902ebd5c308c0bb4aeaef5020c 100644 (file)
@@ -19,6 +19,8 @@
 #include "config.h"
 #include "GRefPtr.h"
 
+#if ENABLE(GLIB_SUPPORT)
+
 #include <glib.h>
 
 namespace WTF {
@@ -35,4 +37,50 @@ template <> void derefGPtr(GHashTable* ptr)
     g_hash_table_unref(ptr);
 }
 
+#if GLIB_CHECK_VERSION(2, 24, 0)
+template <> GVariant* refGPtr(GVariant* ptr)
+{
+    if (ptr)
+        g_variant_ref(ptr);
+    return ptr;
+}
+
+template <> void derefGPtr(GVariant* ptr)
+{
+    g_variant_unref(ptr);
+}
+
+#else
+
+// We do this so that we can avoid including the glib.h header in GRefPtr.h.
+typedef struct _GVariant {
+    bool fake;
+} GVariant; 
+
+template <> GVariant* refGPtr(GVariant* ptr)
+{
+    return ptr;
+}
+
+template <> void derefGPtr(GVariant* ptr)
+{
+}
+
+#endif
+
+template <> GSource* refGPtr(GSource* ptr)
+{
+    if (ptr)
+        g_source_ref(ptr);
+    return ptr;
+}
+
+template <> void derefGPtr(GSource* ptr)
+{
+    if (ptr)
+        g_source_unref(ptr);
+}
+
 } // namespace WTF
+
+#endif // ENABLE(GLIB_SUPPORT)