Home | History | Annotate | Download | only in resources
      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