1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file. 4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#ifndef UI_GFX_VSYNC_PROVIDER_H_ 6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define UI_GFX_VSYNC_PROVIDER_H_ 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/callback.h" 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/time/time.h" 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "ui/gfx/gfx_export.h" 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace gfx { 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class GFX_EXPORT VSyncProvider { 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public: 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual ~VSyncProvider() {} 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) typedef base::Callback< 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void(const base::TimeTicks timebase, const base::TimeDelta interval)> 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) UpdateVSyncCallback; 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Get the time of the most recent screen refresh, along with the time 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // between consecutive refreshes. The callback is called as soon as 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // the data is available: it could be immediately from this method, 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // later via a PostTask to the current MessageLoop, or never (if we have 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // no data source). We provide the strong guarantee that the callback will 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // not be called once the instance of this class is destroyed. 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void GetVSyncParameters(const UpdateVSyncCallback& callback) = 0; 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}; 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} // namespace gfx 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif // UI_GFX_VSYNC_PROVIDER_H_ 34