// 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 "remoting/client/plugin/pepper_plugin_thread_delegate.h" #include "ppapi/cpp/completion_callback.h" #include "ppapi/cpp/module.h" namespace remoting { PepperPluginThreadDelegate::PepperPluginThreadDelegate() : core_(pp::Module::Get()->core()) { } PepperPluginThreadDelegate::~PepperPluginThreadDelegate() { } bool PepperPluginThreadDelegate::RunOnPluginThread( base::TimeDelta delay, void(CDECL function)(void*), void* data) { // It is safe to cast |function| to PP_CompletionCallback_Func, // which is defined as void(*)(void*, int). The callee will just // ignore the last argument. The only case when it may be unsafe is // with VS when default calling convention is set to __stdcall, but // this code will not typecheck in that case. core_->CallOnMainThread( delay.InMilliseconds(), pp::CompletionCallback( reinterpret_cast(function), data), 0); return true; } } // namespace remoting