* Fix CComponents::getScreen()/hide() & CComponentsItem::hideCCItem()

- Use CFrameBuffer::waitForIdle() to ensure that all GXA commands
  are finished before SaveScreen() / RestoreScreen() is executed
This commit is contained in:
Michael Liebmann
2013-05-17 19:42:50 +02:00
parent d460c50bd5
commit 072097cd06
2 changed files with 3 additions and 0 deletions

View File

@@ -145,6 +145,7 @@ void CComponents::paintFbItems(bool do_save_bg)
inline fb_pixel_t* CComponents::getScreen(int ax, int ay, int dx, int dy)
{
fb_pixel_t* pixbuf = new fb_pixel_t[dx * dy];
frameBuffer->waitForIdle("CComponents::getScreen()");
frameBuffer->SaveScreen(ax, ay, dx, dy, pixbuf);
return pixbuf;
}
@@ -154,6 +155,7 @@ inline void CComponents::hide()
{
for(size_t i =0; i< v_fbdata.size() ;i++) {
if (v_fbdata[i].pixbuf != NULL){
frameBuffer->waitForIdle("CComponents::hide()");
frameBuffer->RestoreScreen(v_fbdata[i].x, v_fbdata[i].y, v_fbdata[i].dx, v_fbdata[i].dy, v_fbdata[i].pixbuf);
delete[] v_fbdata[i].pixbuf;
v_fbdata[i].pixbuf = NULL;

View File

@@ -112,6 +112,7 @@ void CComponentsItem::hideCCItem(bool no_restore)
is_painted = false;
if (saved_screen.pixbuf) {
frameBuffer->waitForIdle("CComponentsItem::hideCCItem()");
frameBuffer->RestoreScreen(saved_screen.x, saved_screen.y, saved_screen.dx, saved_screen.dy, saved_screen.pixbuf);
if (no_restore) {
delete[] saved_screen.pixbuf;