void IliadDrawArea::refreshDeviceScreen(eDmQuality quality, bool bOff) { XSync(display, true); dmDisplay (dmCmdPriorUrgent, quality); }
/** * callback : called when GTK in idle mode * * @param data - indicates where the update request came from (DEBUG reasons) * * @returns 0 (to remove the "idle mode" handler) */ gboolean display_update_during_idle_handling(gpointer data) { int level = (int) data; int nQuality; eDmQuality quality; XImage *xi; // full screen update, gdk_threads_enter(); xi = XGetImage(GDK_DISPLAY(), GDK_ROOT_WINDOW(), 0, 0, 1, 1, AllPlanes, XYPixmap); gdk_flush(); XDestroyImage(xi); gdk_threads_leave(); erbusy_off(); // Extract // level from data // waveform from data level = (int) data & 0x0000FFFF; nQuality = (int) data >> 16; #if (ST_SCREEN_ON) static int counter = 0; ST_WARNPRINTF(" **** (%d.%d) ***** [%d]", level, nQuality, counter++); #endif switch (nQuality) { case WAVEFORM_BW: ST_LOGPRINTF("Request for BW waveform"); quality = dmQBW; break; case WAVEFORM_TYPING: ST_LOGPRINTF("Request for Typing waveform"); quality = dmQTyping; break; default: quality = dmQFull; } if ((level == MAIN_WINDOW_EXPOSE_LEVEL) || (level == SETUP_SCREEN_EXPOSE_LEVEL) || (level == ONE_BUTTON_ITEM_CLICKED_LEVEL) || (level == SETUP_PAGE_LAYOUT_CHANGE) || (level == SETTING_ITEM_CHANGE)) { // full screen update => should be done immediately dmDisplay(dmCmdPriorUrgent, quality); } else if ((level == BUTTON_FOCUS_IN_LEVEL) || (level == SELECTION_FOCUS_IN_LEVEL) || (level == TEXT_ENTRY_FOCUS_IN_LEVEL)) { // with Hard key selecting items on the screen dmDisplay(dmCmdPriorNormal, quality); } else if (level == TEXT_ENTRY_CHANGED_LEVEL) { //text entry dmDisplay(dmCmdPriorUrgent, quality); } else if (level == SELECTION_CLICKED_LEVEL) { // switch of a selection item dmDisplay(dmCmdPriorUrgent, quality); } else { dmDisplay(dmCmdPriorUrgent, quality); } //reset the current level g_currentLevel = LOWEST_LEVEL; // return FALSE to remove handler return FALSE; }