1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "cc/resources/sync_point_helper.h" 6 7 #include "third_party/WebKit/public/platform/WebGraphicsContext3D.h" 8 9 namespace cc { 10 11 class SignalSyncPointCallbackClass 12 : public WebKit::WebGraphicsContext3D::WebGraphicsSyncPointCallback { 13 public: 14 explicit SignalSyncPointCallbackClass(const base::Closure& closure) 15 : closure_(closure) {} 16 17 virtual void onSyncPointReached() { 18 if (!closure_.is_null()) 19 closure_.Run(); 20 } 21 22 private: 23 base::Closure closure_; 24 }; 25 26 void SyncPointHelper::SignalSyncPoint( 27 WebKit::WebGraphicsContext3D* context3d, 28 unsigned sync_point, 29 const base::Closure& closure) { 30 SignalSyncPointCallbackClass* callback_class = 31 new SignalSyncPointCallbackClass(closure); 32 33 // Pass ownership of the CallbackClass to WebGraphicsContext3D. 34 context3d->signalSyncPoint(sync_point, callback_class); 35 } 36 37 void SyncPointHelper::SignalQuery( 38 WebKit::WebGraphicsContext3D* context3d, 39 WebKit::WebGLId query, 40 const base::Closure& closure) { 41 SignalSyncPointCallbackClass* callback_class = 42 new SignalSyncPointCallbackClass(closure); 43 44 // Pass ownership of the CallbackClass to WebGraphicsContext3D. 45 context3d->signalQuery(query, callback_class); 46 } 47 48 } // namespace cc 49