Index: ppapi/proxy/ppb_surface_3d_proxy.cc |
=================================================================== |
--- ppapi/proxy/ppb_surface_3d_proxy.cc (revision 89886) |
+++ ppapi/proxy/ppb_surface_3d_proxy.cc (working copy) |
@@ -12,6 +12,7 @@ |
#include "ppapi/proxy/plugin_resource.h" |
#include "ppapi/proxy/ppapi_messages.h" |
#include "ppapi/proxy/ppb_context_3d_proxy.h" |
+#include "ppapi/thunk/common.h" |
namespace pp { |
namespace proxy { |
@@ -76,22 +77,24 @@ |
PP_CompletionCallback callback) { |
Surface3D* object = PluginResource::GetAs<Surface3D>(surface_id); |
if (!object) |
- return PP_ERROR_BADRESOURCE; |
+ return ppapi::thunk::MayForceCallback(callback, PP_ERROR_BADRESOURCE); |
PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance( |
object->instance()); |
if (!dispatcher) |
- return PP_ERROR_FAILED; |
+ return ppapi::thunk::MayForceCallback(callback, PP_ERROR_FAILED); |
// For now, disallow blocking calls. We'll need to add support for other |
// threads to this later. |
if (!callback.func) |
- return PP_ERROR_BADARGUMENT; |
+ return ppapi::thunk::MayForceCallback(callback, PP_ERROR_BADARGUMENT); |
- if (object->is_flush_pending()) |
- return PP_ERROR_INPROGRESS; // Can't have >1 flush pending. |
+ if (object->is_flush_pending()) { |
+ // Can't have >1 flush pending. |
+ return ppapi::thunk::MayForceCallback(callback, PP_ERROR_INPROGRESS); |
+ } |
if (!object->context()) |
- return PP_ERROR_FAILED; |
+ return ppapi::thunk::MayForceCallback(callback, PP_ERROR_FAILED); |
object->set_current_flush_callback(callback); |
@@ -169,7 +172,7 @@ |
} |
void PPB_Surface3D_Proxy::OnMsgSwapBuffers(const HostResource& surface_3d) { |
- CompletionCallback callback = callback_factory_.NewCallback( |
+ CompletionCallback callback = callback_factory_.NewOptionalCallback( |
&PPB_Surface3D_Proxy::SendSwapBuffersACKToPlugin, surface_3d); |
int32_t result = ppb_surface_3d_target()->SwapBuffers( |
surface_3d.host_resource(), callback.pp_completion_callback()); |