summaryrefslogtreecommitdiffstats
path: root/ppapi
diff options
context:
space:
mode:
authorbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-27 23:45:41 +0000
committerbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-27 23:45:41 +0000
commitf5e1efb53d33d2e62704e1c0b08e27db7e52b78f (patch)
treeeac6784722c70af3549928b4b6adeaef52712dbb /ppapi
parent27c65768d78818327b50da230f20198ffeb51cad (diff)
downloadchromium_src-f5e1efb53d33d2e62704e1c0b08e27db7e52b78f.zip
chromium_src-f5e1efb53d33d2e62704e1c0b08e27db7e52b78f.tar.gz
chromium_src-f5e1efb53d33d2e62704e1c0b08e27db7e52b78f.tar.bz2
Make the PPP wrappers take an Instance*.
I changed these to take InstanceHandles but this doesn't actually work. If you use them the recommended way, the module->instance mapping isn't set up by the time the constructors are called, so doing AddPerInstanceObject fails. Since these objects are all called on the main thread, there is no race condition with pp::Instance destruction and the implementation using a pointer is safe. BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/9481015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@123828 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi')
-rw-r--r--ppapi/cpp/dev/find_dev.cc5
-rw-r--r--ppapi/cpp/dev/find_dev.h4
-rw-r--r--ppapi/cpp/dev/printing_dev.cc4
-rw-r--r--ppapi/cpp/dev/printing_dev.h4
-rw-r--r--ppapi/cpp/dev/selection_dev.cc4
-rw-r--r--ppapi/cpp/dev/selection_dev.h2
-rw-r--r--ppapi/cpp/dev/video_capture_client_dev.cc4
-rw-r--r--ppapi/cpp/dev/video_capture_client_dev.h4
-rw-r--r--ppapi/cpp/dev/video_decoder_client_dev.cc4
-rw-r--r--ppapi/cpp/dev/video_decoder_client_dev.h3
-rw-r--r--ppapi/cpp/dev/widget_client_dev.cc6
-rw-r--r--ppapi/cpp/dev/widget_client_dev.h3
-rw-r--r--ppapi/cpp/dev/zoom_dev.cc5
-rw-r--r--ppapi/cpp/dev/zoom_dev.h4
-rw-r--r--ppapi/cpp/graphics_3d_client.cc4
-rw-r--r--ppapi/cpp/graphics_3d_client.h4
-rw-r--r--ppapi/cpp/instance.cc12
-rw-r--r--ppapi/cpp/instance.h7
-rw-r--r--ppapi/cpp/mouse_lock.cc4
-rw-r--r--ppapi/cpp/mouse_lock.h3
20 files changed, 41 insertions, 49 deletions
diff --git a/ppapi/cpp/dev/find_dev.cc b/ppapi/cpp/dev/find_dev.cc
index 331ee43..e9640bc 100644
--- a/ppapi/cpp/dev/find_dev.cc
+++ b/ppapi/cpp/dev/find_dev.cc
@@ -50,10 +50,9 @@ const PPP_Find_Dev ppp_find = {
} // namespace
-Find_Dev::Find_Dev(const InstanceHandle& instance)
- : associated_instance_(instance) {
+Find_Dev::Find_Dev(Instance* instance) : associated_instance_(instance) {
Module::Get()->AddPluginInterface(kPPPFindInterface, &ppp_find);
- Instance::AddPerInstanceObject(instance, kPPPFindInterface, this);
+ instance->AddPerInstanceObject(kPPPFindInterface, this);
}
Find_Dev::~Find_Dev() {
diff --git a/ppapi/cpp/dev/find_dev.h b/ppapi/cpp/dev/find_dev.h
index 4e96f68..89c2d5a 100644
--- a/ppapi/cpp/dev/find_dev.h
+++ b/ppapi/cpp/dev/find_dev.h
@@ -12,6 +12,8 @@
namespace pp {
+class Instance;
+
// This class allows you to associate the PPP_Find and PPB_Find C-based
// interfaces with an object. It associates itself with the given instance, and
// registers as the global handler for handling the PPP_Find interface that the
@@ -38,7 +40,7 @@ namespace pp {
class Find_Dev {
public:
// The instance parameter must outlive this class.
- Find_Dev(const InstanceHandle& instance);
+ Find_Dev(Instance* instance);
virtual ~Find_Dev();
// PPP_Find_Dev functions exposed as virtual functions for you to
diff --git a/ppapi/cpp/dev/printing_dev.cc b/ppapi/cpp/dev/printing_dev.cc
index 26fff41..72affff 100644
--- a/ppapi/cpp/dev/printing_dev.cc
+++ b/ppapi/cpp/dev/printing_dev.cc
@@ -70,10 +70,10 @@ const PPP_Printing_Dev ppp_printing = {
} // namespace
-Printing_Dev::Printing_Dev(const InstanceHandle& instance)
+Printing_Dev::Printing_Dev(Instance* instance)
: associated_instance_(instance) {
Module::Get()->AddPluginInterface(kPPPPrintingInterface, &ppp_printing);
- Instance::AddPerInstanceObject(instance, kPPPPrintingInterface, this);
+ instance->AddPerInstanceObject(kPPPPrintingInterface, this);
}
Printing_Dev::~Printing_Dev() {
diff --git a/ppapi/cpp/dev/printing_dev.h b/ppapi/cpp/dev/printing_dev.h
index c2b6b05..734015f 100644
--- a/ppapi/cpp/dev/printing_dev.h
+++ b/ppapi/cpp/dev/printing_dev.h
@@ -11,12 +11,14 @@
namespace pp {
+class Instance;
+
// You would typically use this either via inheritance on your instance or
// by composition: see find_dev.h for an example.
class Printing_Dev {
public:
// The instance parameter must outlive this class.
- explicit Printing_Dev(const InstanceHandle& instance);
+ explicit Printing_Dev(Instance* instance);
virtual ~Printing_Dev();
// PPP_Printing_Dev functions exposed as virtual functions for you to
diff --git a/ppapi/cpp/dev/selection_dev.cc b/ppapi/cpp/dev/selection_dev.cc
index 37bbbeb..7e1284b 100644
--- a/ppapi/cpp/dev/selection_dev.cc
+++ b/ppapi/cpp/dev/selection_dev.cc
@@ -30,10 +30,10 @@ const PPP_Selection_Dev ppp_selection = {
} // namespace
-Selection_Dev::Selection_Dev(const InstanceHandle& instance)
+Selection_Dev::Selection_Dev(Instance* instance)
: associated_instance_(instance) {
Module::Get()->AddPluginInterface(kPPPSelectionInterface, &ppp_selection);
- Instance::AddPerInstanceObject(instance, kPPPSelectionInterface, this);
+ instance->AddPerInstanceObject(kPPPSelectionInterface, this);
}
Selection_Dev::~Selection_Dev() {
diff --git a/ppapi/cpp/dev/selection_dev.h b/ppapi/cpp/dev/selection_dev.h
index 7e9fa2b..629d361 100644
--- a/ppapi/cpp/dev/selection_dev.h
+++ b/ppapi/cpp/dev/selection_dev.h
@@ -36,7 +36,7 @@ class Var;
// };
class Selection_Dev {
public:
- explicit Selection_Dev(const InstanceHandle& instance);
+ explicit Selection_Dev(Instance* instance);
virtual ~Selection_Dev();
// PPP_Selection_Dev functions exposed as virtual functions for you to
diff --git a/ppapi/cpp/dev/video_capture_client_dev.cc b/ppapi/cpp/dev/video_capture_client_dev.cc
index 22a6b9b..2a40232 100644
--- a/ppapi/cpp/dev/video_capture_client_dev.cc
+++ b/ppapi/cpp/dev/video_capture_client_dev.cc
@@ -65,11 +65,11 @@ PPP_VideoCapture_Dev ppp_video_capture = {
} // namespace
-VideoCaptureClient_Dev::VideoCaptureClient_Dev(const InstanceHandle& instance)
+VideoCaptureClient_Dev::VideoCaptureClient_Dev(Instance* instance)
: instance_(instance) {
Module::Get()->AddPluginInterface(kPPPVideoCaptureInterface,
&ppp_video_capture);
- Instance::AddPerInstanceObject(instance, kPPPVideoCaptureInterface, this);
+ instance->AddPerInstanceObject(kPPPVideoCaptureInterface, this);
}
VideoCaptureClient_Dev::~VideoCaptureClient_Dev() {
diff --git a/ppapi/cpp/dev/video_capture_client_dev.h b/ppapi/cpp/dev/video_capture_client_dev.h
index 31fbcf5..85b766e 100644
--- a/ppapi/cpp/dev/video_capture_client_dev.h
+++ b/ppapi/cpp/dev/video_capture_client_dev.h
@@ -14,9 +14,11 @@
namespace pp {
+class Instance;
+
class VideoCaptureClient_Dev {
public:
- explicit VideoCaptureClient_Dev(const InstanceHandle& instance);
+ explicit VideoCaptureClient_Dev(Instance* instance);
virtual ~VideoCaptureClient_Dev();
virtual void OnDeviceInfo(PP_Resource video_capture,
diff --git a/ppapi/cpp/dev/video_decoder_client_dev.cc b/ppapi/cpp/dev/video_decoder_client_dev.cc
index 4c34530..eaab575 100644
--- a/ppapi/cpp/dev/video_decoder_client_dev.cc
+++ b/ppapi/cpp/dev/video_decoder_client_dev.cc
@@ -70,11 +70,11 @@ static PPP_VideoDecoder_Dev videodecoder_interface = {
} // namespace
-VideoDecoderClient_Dev::VideoDecoderClient_Dev(const InstanceHandle& instance)
+VideoDecoderClient_Dev::VideoDecoderClient_Dev(Instance* instance)
: associated_instance_(instance) {
Module::Get()->AddPluginInterface(kPPPVideoDecoderInterface,
&videodecoder_interface);
- Instance::AddPerInstanceObject(instance, kPPPVideoDecoderInterface, this);
+ instance->AddPerInstanceObject(kPPPVideoDecoderInterface, this);
}
VideoDecoderClient_Dev::~VideoDecoderClient_Dev() {
diff --git a/ppapi/cpp/dev/video_decoder_client_dev.h b/ppapi/cpp/dev/video_decoder_client_dev.h
index 77aa135..d598b40 100644
--- a/ppapi/cpp/dev/video_decoder_client_dev.h
+++ b/ppapi/cpp/dev/video_decoder_client_dev.h
@@ -11,6 +11,7 @@
namespace pp {
+class Instance;
class VideoDecoder_Dev;
// This class provides a C++ interface for callbacks related to video decoding.
@@ -19,7 +20,7 @@ class VideoDecoder_Dev;
// instance.
class VideoDecoderClient_Dev {
public:
- VideoDecoderClient_Dev(const InstanceHandle& instance);
+ VideoDecoderClient_Dev(Instance* instance);
virtual ~VideoDecoderClient_Dev();
// Callback to provide buffers for the decoded output pictures.
diff --git a/ppapi/cpp/dev/widget_client_dev.cc b/ppapi/cpp/dev/widget_client_dev.cc
index f170e15..731f292 100644
--- a/ppapi/cpp/dev/widget_client_dev.cc
+++ b/ppapi/cpp/dev/widget_client_dev.cc
@@ -69,13 +69,13 @@ static PPP_Scrollbar_Dev scrollbar_interface = {
} // namespace
-WidgetClient_Dev::WidgetClient_Dev(const InstanceHandle& instance)
+WidgetClient_Dev::WidgetClient_Dev(Instance* instance)
: associated_instance_(instance) {
Module::Get()->AddPluginInterface(kPPPWidgetInterface, &widget_interface);
- Instance::AddPerInstanceObject(instance, kPPPWidgetInterface, this);
+ instance->AddPerInstanceObject(kPPPWidgetInterface, this);
Module::Get()->AddPluginInterface(kPPPScrollbarInterface,
&scrollbar_interface);
- Instance::AddPerInstanceObject(instance, kPPPScrollbarInterface, this);
+ instance->AddPerInstanceObject(kPPPScrollbarInterface, this);
}
WidgetClient_Dev::~WidgetClient_Dev() {
diff --git a/ppapi/cpp/dev/widget_client_dev.h b/ppapi/cpp/dev/widget_client_dev.h
index 808a72e..c638cef 100644
--- a/ppapi/cpp/dev/widget_client_dev.h
+++ b/ppapi/cpp/dev/widget_client_dev.h
@@ -10,6 +10,7 @@
namespace pp {
+class Instance;
class Rect;
class Scrollbar_Dev;
class Widget_Dev;
@@ -19,7 +20,7 @@ class Widget_Dev;
// instance.
class WidgetClient_Dev {
public:
- explicit WidgetClient_Dev(const InstanceHandle& instance);
+ explicit WidgetClient_Dev(Instance* instance);
virtual ~WidgetClient_Dev();
/**
diff --git a/ppapi/cpp/dev/zoom_dev.cc b/ppapi/cpp/dev/zoom_dev.cc
index 4e9f78f..0b19c09 100644
--- a/ppapi/cpp/dev/zoom_dev.cc
+++ b/ppapi/cpp/dev/zoom_dev.cc
@@ -35,10 +35,9 @@ template <> const char* interface_name<PPB_Zoom_Dev>() {
} // namespace
-Zoom_Dev::Zoom_Dev(const InstanceHandle& instance)
- : associated_instance_(instance) {
+Zoom_Dev::Zoom_Dev(Instance* instance) : associated_instance_(instance) {
Module::Get()->AddPluginInterface(kPPPZoomInterface, &ppp_zoom);
- Instance::AddPerInstanceObject(instance, kPPPZoomInterface, this);
+ instance->AddPerInstanceObject(kPPPZoomInterface, this);
}
Zoom_Dev::~Zoom_Dev() {
diff --git a/ppapi/cpp/dev/zoom_dev.h b/ppapi/cpp/dev/zoom_dev.h
index 9e17ff5..b63c019 100644
--- a/ppapi/cpp/dev/zoom_dev.h
+++ b/ppapi/cpp/dev/zoom_dev.h
@@ -12,6 +12,8 @@
namespace pp {
+class Instance;
+
// This class allows you to associate the PPP_Zoom_Dev and PPB_Zoom_Dev C-based
// interfaces with an object. It associates itself with the given instance, and
// registers as the global handler for handling the PPP_Zoom_Dev interface that
@@ -37,7 +39,7 @@ namespace pp {
// };
class Zoom_Dev {
public:
- explicit Zoom_Dev(const InstanceHandle& instance);
+ explicit Zoom_Dev(Instance* instance);
virtual ~Zoom_Dev();
// PPP_Zoom_Dev functions exposed as virtual functions for you to
diff --git a/ppapi/cpp/graphics_3d_client.cc b/ppapi/cpp/graphics_3d_client.cc
index 6702c05..a00d2f3 100644
--- a/ppapi/cpp/graphics_3d_client.cc
+++ b/ppapi/cpp/graphics_3d_client.cc
@@ -30,11 +30,11 @@ static PPP_Graphics3D graphics3d_interface = {
} // namespace
-Graphics3DClient::Graphics3DClient(const InstanceHandle& instance)
+Graphics3DClient::Graphics3DClient(Instance* instance)
: associated_instance_(instance) {
Module::Get()->AddPluginInterface(kPPPGraphics3DInterface,
&graphics3d_interface);
- Instance::AddPerInstanceObject(instance, kPPPGraphics3DInterface, this);
+ instance->AddPerInstanceObject(kPPPGraphics3DInterface, this);
}
Graphics3DClient::~Graphics3DClient() {
diff --git a/ppapi/cpp/graphics_3d_client.h b/ppapi/cpp/graphics_3d_client.h
index 5886b84..186acd4b 100644
--- a/ppapi/cpp/graphics_3d_client.h
+++ b/ppapi/cpp/graphics_3d_client.h
@@ -13,6 +13,8 @@
namespace pp {
+class Instance;
+
// This class provides a C++ interface for callbacks related to 3D. You
// would normally use multiple inheritance to derive from this class in your
// instance.
@@ -23,7 +25,7 @@ class Graphics3DClient {
///
/// @param[in] instance The instance that will own the new
/// <code>Graphics3DClient</code>.
- explicit Graphics3DClient(const InstanceHandle& instance);
+ explicit Graphics3DClient(Instance* instance);
/// Destructor.
virtual ~Graphics3DClient();
diff --git a/ppapi/cpp/instance.cc b/ppapi/cpp/instance.cc
index 56d88ab..c9b50ff 100644
--- a/ppapi/cpp/instance.cc
+++ b/ppapi/cpp/instance.cc
@@ -138,18 +138,6 @@ void Instance::AddPerInstanceObject(const std::string& interface_name,
interface_name_to_objects_[interface_name] = object;
}
-// static
-void Instance::AddPerInstanceObject(const InstanceHandle& instance,
- const std::string& interface_name,
- void* object) {
- // TODO(brettw) assert we're on the main thread (instance is not threadsafe
- // and may be deleted from the main thread).
- Instance* that = Module::Get()->InstanceForPPInstance(instance.pp_instance());
- if (!that)
- return;
- that->AddPerInstanceObject(interface_name, object);
-}
-
void Instance::RemovePerInstanceObject(const std::string& interface_name,
void* object) {
InterfaceNameToObjectMap::iterator found = interface_name_to_objects_.find(
diff --git a/ppapi/cpp/instance.h b/ppapi/cpp/instance.h
index f891bed..77e49d4 100644
--- a/ppapi/cpp/instance.h
+++ b/ppapi/cpp/instance.h
@@ -487,13 +487,6 @@ class Instance {
/// @param[in] object
void AddPerInstanceObject(const std::string& interface_name, void* object);
- /// Static version of AddPerInstanceObject that takes an InstanceHandle. As
- /// with all other instance functions, this must only be called on the main
- /// thread.
- static void AddPerInstanceObject(const InstanceHandle& instance,
- const std::string& interface_name,
- void* object);
-
// {PENDING: summarize Remove method here}
///
/// Refer to AddPerInstanceObject() for further information.
diff --git a/ppapi/cpp/mouse_lock.cc b/ppapi/cpp/mouse_lock.cc
index 828ee89..7724a0f 100644
--- a/ppapi/cpp/mouse_lock.cc
+++ b/ppapi/cpp/mouse_lock.cc
@@ -36,10 +36,10 @@ template <> const char* interface_name<PPB_MouseLock>() {
} // namespace
-MouseLock::MouseLock(const InstanceHandle& instance)
+MouseLock::MouseLock(Instance* instance)
: associated_instance_(instance) {
Module::Get()->AddPluginInterface(kPPPMouseLockInterface, &ppp_mouse_lock);
- Instance::AddPerInstanceObject(instance, kPPPMouseLockInterface, this);
+ instance->AddPerInstanceObject(kPPPMouseLockInterface, this);
}
MouseLock::~MouseLock() {
diff --git a/ppapi/cpp/mouse_lock.h b/ppapi/cpp/mouse_lock.h
index 8c70baa..f52fe10 100644
--- a/ppapi/cpp/mouse_lock.h
+++ b/ppapi/cpp/mouse_lock.h
@@ -15,6 +15,7 @@
namespace pp {
class CompletionCallback;
+class Instance;
/// This class allows you to associate the <code>PPP_MouseLock</code> and
/// <code>PPB_MouseLock</code> C-based interfaces with an object. It associates
@@ -52,7 +53,7 @@ class MouseLock {
///
/// @param[in] instance The instance with which this resource will be
/// associated.
- explicit MouseLock(const InstanceHandle& instance);
+ explicit MouseLock(Instance* instance);
/// Destructor.
virtual ~MouseLock();