Title: [104724] trunk/Source/WebKit2
Revision
104724
Author
[email protected]
Date
2012-01-11 10:59:20 -0800 (Wed, 11 Jan 2012)

Log Message

Fix the Mac GCC build.

Work around the fact that GCC doesn't work very well with Blocks and C++ objets.

* UIProcess/mac/WebProcessProxyMac.mm:
(WebKit::dispatchFunctionOnQueue):
(WebKit::WebProcessProxy::secItemRequest):
(WebKit::WebProcessProxy::secKeychainItemRequest):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (104723 => 104724)


--- trunk/Source/WebKit2/ChangeLog	2012-01-11 18:36:40 UTC (rev 104723)
+++ trunk/Source/WebKit2/ChangeLog	2012-01-11 18:59:20 UTC (rev 104724)
@@ -1,3 +1,14 @@
+2012-01-11  Anders Carlsson  <[email protected]>
+
+        Fix the Mac GCC build.
+
+        Work around the fact that GCC doesn't work very well with Blocks and C++ objets.
+
+        * UIProcess/mac/WebProcessProxyMac.mm:
+        (WebKit::dispatchFunctionOnQueue):
+        (WebKit::WebProcessProxy::secItemRequest):
+        (WebKit::WebProcessProxy::secKeychainItemRequest):
+
 2012-01-11  No'am Rosenthal  <[email protected]>
 
         [Qt][WK2] Directly-composited images sometimes appear with a wrong geometry

Modified: trunk/Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm (104723 => 104724)


--- trunk/Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm	2012-01-11 18:36:40 UTC (rev 104723)
+++ trunk/Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm	2012-01-11 18:59:20 UTC (rev 104724)
@@ -74,12 +74,25 @@
     connection->send(Messages::WebProcess::SecItemResponse(requestID, response), 0);
 }
 
+static void dispatchFunctionOnQueue(dispatch_queue_t queue, const Function<void ()>& function)
+{
+#if COMPILER(CLANG)
+    dispatch_async(queue, function);
+#else
+    Function<void ()>* functionPtr = new Function<void ()>(function);
+    dispatch_async(queue, ^{
+        (*functionPtr)();
+        delete functionPtr;
+    });
+#endif
+}
+
 void WebProcessProxy::secItemRequest(CoreIPC::Connection* connection, uint64_t requestID, const SecItemRequestData& request)
 {
     // Since we don't want the connection work queue to be held up, we do all
     // keychain interaction work on a global dispatch queue.
     dispatch_queue_t keychainWorkQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
-    dispatch_async(keychainWorkQueue, bind(handleSecItemRequest, RefPtr<CoreIPC::Connection>(connection), requestID, request));
+    dispatchFunctionOnQueue(keychainWorkQueue, bind(handleSecItemRequest, RefPtr<CoreIPC::Connection>(connection), requestID, request));
 }
 
 static void handleSecKeychainItemRequest(CoreIPC::Connection* connection, uint64_t requestID, const SecKeychainItemRequestData& request)
@@ -128,7 +141,7 @@
     // Since we don't want the connection work queue to be held up, we do all
     // keychain interaction work on a global dispatch queue.
     dispatch_queue_t keychainWorkQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
-    dispatch_async(keychainWorkQueue, bind(handleSecKeychainItemRequest, RefPtr<CoreIPC::Connection>(connection), requestID, request));
+    dispatchFunctionOnQueue(keychainWorkQueue, bind(handleSecKeychainItemRequest, RefPtr<CoreIPC::Connection>(connection), requestID, request));
 }
 
 bool WebProcessProxy::fullKeyboardAccessEnabled()
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to