diff options
author | Louis-Francis Ratté-Boulianne <lfrb@collabora.com> | 2014-11-13 09:32:41 -0500 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2014-11-15 12:17:42 +0100 |
commit | ec5fa3c9073db79489d8eba1eb8a09029b699e3f (patch) | |
tree | eb55f47971319b8f90bb86ad37430c857fc751ae /vcl/opengl/x11/gdiimpl.cxx | |
parent | 7dc6fd3908f752c3552dfe34b1a3da6e485b5fd5 (diff) |
vcl: Replace GetPixmapFromScreen by FillPixmapFromScreen
Conflicts:
vcl/unx/generic/gdi/gdiimpl.cxx
vcl/unx/generic/gdi/salgdi2.cxx
Change-Id: I2cb960d194ee5bc38beece97e8b21cc6fa3b3fbc
Diffstat (limited to 'vcl/opengl/x11/gdiimpl.cxx')
-rw-r--r-- | vcl/opengl/x11/gdiimpl.cxx | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/vcl/opengl/x11/gdiimpl.cxx b/vcl/opengl/x11/gdiimpl.cxx index 6a16b9f92798..3d242ac5719e 100644 --- a/vcl/opengl/x11/gdiimpl.cxx +++ b/vcl/opengl/x11/gdiimpl.cxx @@ -80,42 +80,39 @@ void X11OpenGLSalGraphicsImpl::Init() } } -X11Pixmap* X11OpenGLSalGraphicsImpl::GetPixmapFromScreen( const Rectangle& rRect ) +bool X11OpenGLSalGraphicsImpl::FillPixmapFromScreen( X11Pixmap* pPixmap, int nX, int nY ) { Display* pDisplay = mrParent.GetXDisplay(); SalX11Screen nScreen = mrParent.GetScreenNumber(); XVisualInfo aVisualInfo; - X11Pixmap* pPixmap; XImage* pImage; char* pData; - SAL_INFO( "vcl.opengl", "GetPixmapFromScreen" ); - // TODO: lfrb: Use context depth - pPixmap = new X11Pixmap( pDisplay, nScreen, rRect.GetWidth(), rRect.GetHeight(), 24 ); + SAL_INFO( "vcl.opengl", "FillPixmapFromScreen" ); if( !OpenGLHelper::GetVisualInfo( pDisplay, nScreen.getXScreen(), aVisualInfo ) ) - return pPixmap; + return false; // make sure everything is synced up before reading back maContext.makeCurrent(); glXWaitX(); // TODO: lfrb: What if offscreen? - pData = (char*) malloc( rRect.GetWidth() * rRect.GetHeight() * 4 ); + pData = (char*) malloc( pPixmap->GetWidth() * pPixmap->GetHeight() * 4 ); glPixelStorei( GL_PACK_ALIGNMENT, 1 ); - glReadPixels( rRect.Left(), GetHeight() - rRect.Top(), rRect.GetWidth(), rRect.GetHeight(), + glReadPixels( nX, GetHeight() - nY, pPixmap->GetWidth(), pPixmap->GetHeight(), GL_RGBA, GL_UNSIGNED_BYTE, pData ); pImage = XCreateImage( pDisplay, aVisualInfo.visual, 24, ZPixmap, 0, pData, - rRect.GetWidth(), rRect.GetHeight(), 8, 0 ); + pPixmap->GetWidth(), pPixmap->GetHeight(), 8, 0 ); XInitImage( pImage ); GC aGC = XCreateGC( pDisplay, pPixmap->GetPixmap(), 0, NULL ); XPutImage( pDisplay, pPixmap->GetDrawable(), aGC, pImage, - 0, 0, 0, 0, rRect.GetWidth(), rRect.GetHeight() ); + 0, 0, 0, 0, pPixmap->GetWidth(), pPixmap->GetHeight() ); XFreeGC( pDisplay, aGC ); XDestroyImage( pImage ); - return pPixmap; + return true; } bool X11OpenGLSalGraphicsImpl::RenderPixmapToScreen( X11Pixmap* pPixmap, int nX, int nY ) |