reland 121901, PPAPI: Add unlocking for PPP calls and callbacks...
"""
With this patch, ppapi_tests pass locally when building with enable_pepper_threading=1. (They didn't before).
TODO: Test more calls off the main thread, make sync completion callbacks work.
BUG=92909
TEST=
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=121901
"""
[email protected]
Review URL: http://codereview.chromium.org/9361065
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@122001 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/ppapi/shared_impl/ppp_instance_combined.cc b/ppapi/shared_impl/ppp_instance_combined.cc
index d27c2a0..e5b7998 100644
--- a/ppapi/shared_impl/ppp_instance_combined.cc
+++ b/ppapi/shared_impl/ppp_instance_combined.cc
@@ -1,8 +1,9 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ppapi/shared_impl/ppp_instance_combined.h"
+#include "ppapi/shared_impl/proxy_lock.h"
namespace ppapi {
@@ -26,31 +27,36 @@
uint32_t argc,
const char* argn[],
const char* argv[]) {
- return instance_1_1_.DidCreate(instance, argc, argn, argv);
+ return CallWhileUnlocked(instance_1_1_.DidCreate, instance, argc, argn, argv);
}
void PPP_Instance_Combined::DidDestroy(PP_Instance instance) {
- return instance_1_1_.DidDestroy(instance);
+ return CallWhileUnlocked(instance_1_1_.DidDestroy, instance);
}
void PPP_Instance_Combined::DidChangeView(PP_Instance instance,
PP_Resource view_changed_resource,
const struct PP_Rect* position,
const struct PP_Rect* clip) {
- if (instance_1_1_.DidChangeView)
- instance_1_1_.DidChangeView(instance, view_changed_resource);
- else
- did_change_view_1_0_(instance, position, clip);
+ if (instance_1_1_.DidChangeView) {
+ CallWhileUnlocked(instance_1_1_.DidChangeView,
+ instance,
+ view_changed_resource);
+ } else {
+ CallWhileUnlocked(did_change_view_1_0_, instance, position, clip);
+ }
}
void PPP_Instance_Combined::DidChangeFocus(PP_Instance instance,
PP_Bool has_focus) {
- instance_1_1_.DidChangeFocus(instance, has_focus);
+ CallWhileUnlocked(instance_1_1_.DidChangeFocus, instance, has_focus);
}
PP_Bool PPP_Instance_Combined::HandleDocumentLoad(PP_Instance instance,
PP_Resource url_loader) {
- return instance_1_1_.HandleDocumentLoad(instance, url_loader);
+ return CallWhileUnlocked(instance_1_1_.HandleDocumentLoad,
+ instance,
+ url_loader);
}
} // namespace ppapi