include/vcl/opengl/OpenGLContext.hxx | 2 ++ vcl/source/opengl/OpenGLContext.cxx | 31 +++++++++++++++++++++++++------ vcl/win/source/gdi/salgdi.cxx | 2 ++ 3 files changed, 29 insertions(+), 6 deletions(-)
New commits: commit ade03f86a390889d3888c7c1c603f5b415446d76 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Tue Nov 4 01:19:12 2014 +0100 use the new virtual device support in OpenGL for win backend Change-Id: Icd67dd7bad1399c861db41c418095c2b6b1d6d78 diff --git a/vcl/win/source/gdi/salgdi.cxx b/vcl/win/source/gdi/salgdi.cxx index 9dfcf74..17074a8 100644 --- a/vcl/win/source/gdi/salgdi.cxx +++ b/vcl/win/source/gdi/salgdi.cxx @@ -487,6 +487,8 @@ void WinSalGraphics::InitGraphics() OpenGLSalGraphicsImpl* pImpl = dynamic_cast<OpenGLSalGraphicsImpl*>(mpImpl.get()); if (pImpl) { + if (mbVirDev) + pImpl->GetOpenGLContext().requestVirtualDevice(); pImpl->GetOpenGLContext().init(mhLocalDC, mhWnd); } } commit 6dfbb195d18047b9808abe1a58801606da8d7245 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Tue Nov 4 01:15:30 2014 +0100 support rendering to memory device contexts on Windows Change-Id: I91fdd429663fae76bfe17d37de86d118621cf160 diff --git a/include/vcl/opengl/OpenGLContext.hxx b/include/vcl/opengl/OpenGLContext.hxx index 3a8ec9a..a8344d6 100644 --- a/include/vcl/opengl/OpenGLContext.hxx +++ b/include/vcl/opengl/OpenGLContext.hxx @@ -156,6 +156,7 @@ public: void requestLegacyContext(); void requestSingleBufferedRendering(); + void requestVirtualDevice(); bool init(vcl::Window* pParent = 0); bool init(SystemChildWindow* pChildWindow); @@ -211,6 +212,7 @@ private: bool mbInitialized; bool mbRequestLegacyContext; bool mbUseDoubleBufferedRendering; + bool mbRequestVirtualDevice; }; #endif diff --git a/vcl/source/opengl/OpenGLContext.cxx b/vcl/source/opengl/OpenGLContext.cxx index fe97372..508bf0b 100644 --- a/vcl/source/opengl/OpenGLContext.cxx +++ b/vcl/source/opengl/OpenGLContext.cxx @@ -37,7 +37,8 @@ OpenGLContext::OpenGLContext(): m_pChildWindow(NULL), mbInitialized(false), mbRequestLegacyContext(false), - mbUseDoubleBufferedRendering(true) + mbUseDoubleBufferedRendering(true), + mbRequestVirtualDevice(false) { } @@ -77,6 +78,11 @@ void OpenGLContext::requestSingleBufferedRendering() mbUseDoubleBufferedRendering = false; } +void OpenGLContext::requestVirtualDevice() +{ + mbRequestVirtualDevice = true; +} + #if defined( _WIN32 ) static LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { @@ -182,7 +188,8 @@ bool WGLisExtensionSupported(const char *extension) } } -bool InitMultisample(PIXELFORMATDESCRIPTOR pfd, int& rPixelFormat, bool bUseDoubleBufferedRendering) +bool InitMultisample(PIXELFORMATDESCRIPTOR pfd, int& rPixelFormat, + bool bUseDoubleBufferedRendering, bool bRequestVirtualDevice) { HWND hWnd = NULL; GLWindow glWin; @@ -235,6 +242,11 @@ bool InitMultisample(PIXELFORMATDESCRIPTOR pfd, int& rPixelFormat, bool bUseDoub if (!bUseDoubleBufferedRendering) iAttributes[1] = GL_FALSE; + if (bRequestVirtualDevice) + { + iAttributes[2] = WGL_DRAW_TO_BITMAP_ARB; + } + bool bArbMultisampleSupported = true; // First We Check To See If We Can Get A Pixel Format For 4 Samples @@ -589,9 +601,7 @@ bool OpenGLContext::ImplInit() { sizeof(PIXELFORMATDESCRIPTOR), 1, // Version Number - PFD_DRAW_TO_WINDOW | - PFD_SUPPORT_OPENGL | - PFD_DOUBLEBUFFER, + PFD_SUPPORT_OPENGL, PFD_TYPE_RGBA, // Request An RGBA Format (BYTE)32, // Select Our Color Depth 0, 0, 0, 0, 0, 0, // Color Bits Ignored @@ -607,9 +617,18 @@ bool OpenGLContext::ImplInit() 0, 0, 0 // Layer Masks Ignored }; + if (mbUseDoubleBufferedRendering) + PixelFormatFront.dwFlags |= PFD_DOUBLEBUFFER; + + if (mbRequestVirtualDevice) + PixelFormatFront.dwFlags |= PFD_DRAW_TO_BITMAP; + else + PixelFormatFront.dwFlags |= PFD_DRAW_TO_WINDOW; + // we must check whether can set the MSAA int WindowPix = 0; - bool bMultiSampleSupport = InitMultisample(PixelFormatFront, WindowPix, mbUseDoubleBufferedRendering); + bool bMultiSampleSupport = InitMultisample(PixelFormatFront, WindowPix, + mbUseDoubleBufferedRendering, mbRequestVirtualDevice); if (bMultiSampleSupport && WindowPix != 0) { m_aGLWin.bMultiSampleSupported = true; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits