diff options
author | apatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-04 00:58:12 +0000 |
---|---|---|
committer | apatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-04 00:58:12 +0000 |
commit | a96a6021f0cf7acf3c54b9050d1d313b12ba2748 (patch) | |
tree | ea7d5b8a23c6904784cbdaec3e944ca0bbac77c4 /gpu | |
parent | b79896c481a82ef97a4f378680e215009e07bf0b (diff) | |
download | chromium_src-a96a6021f0cf7acf3c54b9050d1d313b12ba2748.zip chromium_src-a96a6021f0cf7acf3c54b9050d1d313b12ba2748.tar.gz chromium_src-a96a6021f0cf7acf3c54b9050d1d313b12ba2748.tar.bz2 |
Added ReleaseCurrent to GLES2CmdDecoder.
I need it for http://codereview.chromium.org/8060045/
Also enabled the SwapBuffers callback on all platforms for he same reason.
Review URL: http://codereview.chromium.org/8430042
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108604 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu')
-rw-r--r-- | gpu/command_buffer/service/gles2_cmd_decoder.cc | 20 | ||||
-rw-r--r-- | gpu/command_buffer/service/gles2_cmd_decoder.h | 5 | ||||
-rw-r--r-- | gpu/command_buffer/service/gles2_cmd_decoder_mock.h | 1 |
3 files changed, 12 insertions, 14 deletions
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc index 6a10e92..29695b4 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc @@ -504,6 +504,7 @@ class GLES2DecoderImpl : public base::SupportsWeakPtr<GLES2DecoderImpl>, virtual bool ResizeOffscreenFrameBuffer(const gfx::Size& size); void UpdateParentTextureInfo(); virtual bool MakeCurrent(); + virtual void ReleaseCurrent(); virtual GLES2Util* GetGLES2Util() { return &util_; } virtual gfx::GLContext* GetGLContext() { return context_.get(); } virtual gfx::GLSurface* GetGLSurface() { return surface_.get(); } @@ -512,9 +513,7 @@ class GLES2DecoderImpl : public base::SupportsWeakPtr<GLES2DecoderImpl>, virtual void SetGLError(GLenum error, const char* msg); virtual void SetResizeCallback(Callback1<gfx::Size>::Type* callback); -#if defined(OS_MACOSX) virtual void SetSwapBuffersCallback(Callback0::Type* callback); -#endif virtual void SetStreamTextureManager(StreamTextureManager* manager); virtual bool GetServiceTextureId(uint32 client_texture_id, @@ -1362,9 +1361,7 @@ class GLES2DecoderImpl : public base::SupportsWeakPtr<GLES2DecoderImpl>, scoped_ptr<Callback1<gfx::Size>::Type> resize_callback_; -#if defined(OS_MACOSX) scoped_ptr<Callback0::Type> swap_buffers_callback_; -#endif StreamTextureManager* stream_texture_manager_; @@ -2267,6 +2264,11 @@ bool GLES2DecoderImpl::MakeCurrent() { return result; } +void GLES2DecoderImpl::ReleaseCurrent() { + if (context_.get()) + context_->ReleaseCurrent(surface_.get()); +} + void GLES2DecoderImpl::RestoreCurrentRenderbufferBindings() { RenderbufferManager::RenderbufferInfo* renderbuffer = GetRenderbufferInfoForTarget(GL_RENDERBUFFER); @@ -2461,11 +2463,9 @@ void GLES2DecoderImpl::SetResizeCallback( resize_callback_.reset(callback); } -#if defined(OS_MACOSX) void GLES2DecoderImpl::SetSwapBuffersCallback(Callback0::Type* callback) { swap_buffers_callback_.reset(callback); } -#endif void GLES2DecoderImpl::SetStreamTextureManager(StreamTextureManager* manager) { stream_texture_manager_ = manager; @@ -7058,11 +7058,10 @@ error::Error GLES2DecoderImpl::HandleSwapBuffers( // For multisampled buffers, bind the resolved frame buffer so that // callbacks can call ReadPixels or CopyTexImage2D. ScopedResolvedFrameBufferBinder binder(this, true, false); -#if defined(OS_MACOSX) if (swap_buffers_callback_.get()) { swap_buffers_callback_->Run(); } -#endif + return error::kNoError; } else { ScopedFrameBufferBinder binder(this, @@ -7083,11 +7082,10 @@ error::Error GLES2DecoderImpl::HandleSwapBuffers( // Run the callback with |binder| in scope, so that the callback can call // ReadPixels or CopyTexImage2D. -#if defined(OS_MACOSX) if (swap_buffers_callback_.get()) { swap_buffers_callback_->Run(); } -#endif + return error::kNoError; } } else { @@ -7098,11 +7096,9 @@ error::Error GLES2DecoderImpl::HandleSwapBuffers( } } -#if defined(OS_MACOSX) if (swap_buffers_callback_.get()) { swap_buffers_callback_->Run(); } -#endif return error::kNoError; } diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.h b/gpu/command_buffer/service/gles2_cmd_decoder.h index 6398bff..fb8534d 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder.h +++ b/gpu/command_buffer/service/gles2_cmd_decoder.h @@ -90,6 +90,9 @@ class GLES2Decoder : public CommonDecoder { // Make this decoder's GL context current. virtual bool MakeCurrent() = 0; + // Have the decoder release the context. + virtual void ReleaseCurrent() = 0; + // Gets the GLES2 Util which holds info. virtual GLES2Util* GetGLES2Util() = 0; @@ -107,10 +110,8 @@ class GLES2Decoder : public CommonDecoder { virtual void SetResizeCallback( Callback1<gfx::Size>::Type* callback) = 0; -#if defined(OS_MACOSX) // Sets a callback which is called when a SwapBuffers command is processed. virtual void SetSwapBuffersCallback(Callback0::Type* callback) = 0; -#endif virtual void SetStreamTextureManager(StreamTextureManager* manager) = 0; diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_mock.h b/gpu/command_buffer/service/gles2_cmd_decoder_mock.h index 7cdd56c..723ee0b 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_mock.h +++ b/gpu/command_buffer/service/gles2_cmd_decoder_mock.h @@ -41,6 +41,7 @@ class MockGLES2Decoder : public GLES2Decoder { MOCK_METHOD2(SetParent, bool(GLES2Decoder* parent, uint32 parent_texture_id)); MOCK_METHOD1(ResizeOffscreenFrameBuffer, bool(const gfx::Size& size)); MOCK_METHOD0(MakeCurrent, bool()); + MOCK_METHOD0(ReleaseCurrent, void()); MOCK_METHOD1(GetServiceIdForTesting, uint32(uint32 client_id)); MOCK_METHOD0(GetGLES2Util, GLES2Util*()); MOCK_METHOD0(GetGLSurface, gfx::GLSurface*()); |