summaryrefslogtreecommitdiff
path: root/vcl/opengl/x11/gdiimpl.cxx
diff options
context:
space:
mode:
authorLouis-Francis Ratté-Boulianne <lfrb@collabora.com>2014-11-13 09:32:41 -0500
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2014-11-15 12:17:42 +0100
commitec5fa3c9073db79489d8eba1eb8a09029b699e3f (patch)
treeeb55f47971319b8f90bb86ad37430c857fc751ae /vcl/opengl/x11/gdiimpl.cxx
parent7dc6fd3908f752c3552dfe34b1a3da6e485b5fd5 (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.cxx19
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 )