summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorjbauman@chromium.org <jbauman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-06 03:50:26 +0000
committerjbauman@chromium.org <jbauman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-06 03:50:26 +0000
commit07e536daed186bce10ee182b06861834b83196a9 (patch)
tree5fda0c78bf1b6be8f3c8e27bfa39d2a5fe8c1a53 /ui
parent85c88a13764e3dbb52bed9e603b4cab55f37e5e8 (diff)
downloadchromium_src-07e536daed186bce10ee182b06861834b83196a9.zip
chromium_src-07e536daed186bce10ee182b06861834b83196a9.tar.gz
chromium_src-07e536daed186bce10ee182b06861834b83196a9.tar.bz2
Only reset D3D device on context lost
We were getting spurious errors from Present, which was causing us to unnecessarily recreate the device. BUG=122087 TEST= Review URL: http://codereview.chromium.org/9949034 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@131096 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r--ui/gfx/surface/accelerated_surface_win.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/ui/gfx/surface/accelerated_surface_win.cc b/ui/gfx/surface/accelerated_surface_win.cc
index 0210534..9ab6bb4 100644
--- a/ui/gfx/surface/accelerated_surface_win.cc
+++ b/ui/gfx/surface/accelerated_surface_win.cc
@@ -91,7 +91,7 @@ class PresentThread : public base::Thread,
public:
explicit PresentThread(const char* name);
- IDirect3DDevice9* device() { return device_.get(); }
+ IDirect3DDevice9Ex* device() { return device_.get(); }
IDirect3DQuery9* query() { return query_.get(); }
void InitDevice();
@@ -638,8 +638,10 @@ void AcceleratedPresenter::DoPresentAndAcknowledge(
{
TRACE_EVENT0("surface", "Present");
hr = swap_chain_->Present(&rect, &rect, window_, NULL, 0);
- if (FAILED(hr))
+ if (FAILED(hr) &&
+ FAILED(present_thread_->device()->CheckDeviceState(window_))) {
present_thread_->ResetDevice();
+ }
}
}