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

- Use CFrameBuffer::waitForIdle() to ensure that all GXA commands
 are finished before SaveScreen() / RestoreScreen() is executed


Origin commit data
------------------
Branch: ni/coolstream
Commit: 072097cd06
Author: Michael Liebmann <tuxcode.bbg@gmail.com>
Date: 2013-05-17 (Fri, 17 May 2013)

Origin message was:
------------------
* Fix CComponents::getScreen()/hide() & CComponentsItem::hideCCItem()

- Use CFrameBuffer::waitForIdle() to ensure that all GXA commands
 are finished before SaveScreen() / RestoreScreen() is executed


------------------
This commit was generated by Migit
This commit is contained in:
Michael Liebmann
2013-05-17 19:42:50 +02:00
parent 647030f669
commit a698ce281f
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) inline fb_pixel_t* CComponents::getScreen(int ax, int ay, int dx, int dy)
{ {
fb_pixel_t* pixbuf = new fb_pixel_t[dx * dy]; fb_pixel_t* pixbuf = new fb_pixel_t[dx * dy];
frameBuffer->waitForIdle("CComponents::getScreen()");
frameBuffer->SaveScreen(ax, ay, dx, dy, pixbuf); frameBuffer->SaveScreen(ax, ay, dx, dy, pixbuf);
return pixbuf; return pixbuf;
} }
@@ -154,6 +155,7 @@ inline void CComponents::hide()
{ {
for(size_t i =0; i< v_fbdata.size() ;i++) { for(size_t i =0; i< v_fbdata.size() ;i++) {
if (v_fbdata[i].pixbuf != NULL){ 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); 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; delete[] v_fbdata[i].pixbuf;
v_fbdata[i].pixbuf = NULL; v_fbdata[i].pixbuf = NULL;

View File

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