diff options
Diffstat (limited to 'ppapi/thunk/common.cc')
-rw-r--r-- | ppapi/thunk/common.cc | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/ppapi/thunk/common.cc b/ppapi/thunk/common.cc new file mode 100644 index 0000000..b59f139 --- /dev/null +++ b/ppapi/thunk/common.cc @@ -0,0 +1,30 @@ +// Copyright (c) 2011 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/thunk/common.h" + +#include "base/message_loop.h" +#include "ppapi/c/pp_errors.h" + +namespace ppapi { +namespace thunk { + +int32_t MayForceCallback(PP_CompletionCallback callback, int32_t result) { + if (result == PP_OK_COMPLETIONPENDING) + return result; + + if (callback.func == NULL || + (callback.flags & PP_COMPLETIONCALLBACK_FLAG_OPTIONAL) != 0) + return result; + + // TODO(polina): make this work off the main thread as well + // (At this point this should not be an issue because PPAPI is only supported + // on the main thread). + MessageLoop::current()->PostTask(FROM_HERE, NewRunnableFunction( + callback.func, callback.user_data, result)); + return PP_OK_COMPLETIONPENDING; +} + +} // namespace thunk +} // namespace ppapi |