| Index: ui/gfx/surface/accelerated_surface_win.cc
|
| ===================================================================
|
| --- ui/gfx/surface/accelerated_surface_win.cc (revision 119674)
|
| +++ ui/gfx/surface/accelerated_surface_win.cc (working copy)
|
| @@ -122,6 +122,10 @@
|
| const int thread_affinity_;
|
| base::ScopedNativeLibrary d3d_module_;
|
|
|
| + // Whether the presenter is suspended and therefore unable to represent. Only
|
| + // accessed on the UI thread so the lock is unnecessary.
|
| + bool suspended_;
|
| +
|
| // The size of the swap chain once any pending resizes have been processed.
|
| // Only accessed on the UI thread so the lock is unnecessary.
|
| gfx::Size pending_size_;
|
| @@ -151,6 +155,7 @@
|
|
|
| AcceleratedPresenter::AcceleratedPresenter()
|
| : thread_affinity_(g_present_thread_pool.Pointer()->NextThread()),
|
| + suspended_(true),
|
| num_pending_resizes_(0) {
|
| g_present_thread_pool.Pointer()->PostTask(
|
| thread_affinity_,
|
| @@ -196,6 +201,8 @@
|
| size,
|
| surface_id,
|
| completion_task));
|
| +
|
| + suspended_ = false;
|
| }
|
|
|
| bool AcceleratedPresenter::Present(gfx::NativeWindow window) {
|
| @@ -203,6 +210,9 @@
|
|
|
| HRESULT hr;
|
|
|
| + if (suspended_)
|
| + return false;
|
| +
|
| base::AutoLock locked(lock_);
|
|
|
| if (!device_)
|
| @@ -265,6 +275,8 @@
|
| base::Bind(&AcceleratedPresenter::DoResize,
|
| base::Unretained(this),
|
| gfx::Size(1, 1)));
|
| +
|
| + suspended_ = true;
|
| }
|
|
|
| void AcceleratedPresenter::DoInitialize() {
|
| @@ -499,3 +511,8 @@
|
| bool AcceleratedSurface::Present(HWND window) {
|
| return presenter_->Present(window);
|
| }
|
| +
|
| +void AcceleratedSurface::Suspend() {
|
| + presenter_->Suspend();
|
| +}
|
| +
|
|
|