erbrowser/src/displayUpdate.cpp File Reference

#include <gdk/gdkx.h>
#include "liberdm/erdm.h"
#include "browserTypes.h"
#include "timingInfo.h"
#include "displayUpdate.h"
#include "browserLog.h"
#include "erbusy.h"

Go to the source code of this file.

Functions

int display_update_get_level (void)
int display_update_reset_level (void)
gboolean display_update_during_idle_handling (gpointer data)
gboolean display_update_request_screen_refresh (int level, gpointer data)
void display_update_increase_level (int level)

Variables

static int g_currentLevel = LOWEST_LEVEL


Function Documentation

gboolean display_update_during_idle_handling ( gpointer  data  ) 

callback : called when GTK in idle mode

Parameters:
data - indicates where the update request came from (DEBUG reasons)
Returns:
0 (to remove the "idle mode" handler)

Definition at line 53 of file displayUpdate.cpp.

00054 {
00055     int        q = (int) data;
00056     eDmQuality quality = dmQFull;
00057         
00058     if (q == DM_QUALITY_TYPING)
00059     {
00060         quality = dmQTyping;
00061     }
00062 
00063     BR_DISPLAYPRINTF("request screen update (%d)", quality);
00064 
00065 #ifdef TIMING_INFORMATION_ENABLED
00066     timing_display_time_elapsed();
00067 #endif //TIMING_INFORMATION_ENABLED
00068 
00069     // full screen update,
00070     gdk_threads_enter();
00071     gdk_flush();
00072     gdk_flush();
00073     gdk_threads_leave();
00074 
00075     //not busy any more
00076     erbusy_off();
00077 
00078 #ifdef TIMING_INFORMATION_ENABLED
00079     timing_display_time_elapsed();
00080 #endif //TIMING_INFORMATION_ENABLED
00081 
00082     // full screen update,
00083     dmDisplay(dmCmdPriorUrgent, quality);
00084 
00085     // return FALSE to remove handler
00086     return FALSE;
00087 }

Here is the call graph for this function:

int display_update_get_level ( void   ) 

Definition at line 113 of file displayUpdate.cpp.

00114 {
00115     return g_currentLevel;
00116 }

void display_update_increase_level ( int  level  ) 

Increase the level value of the screen refresh. Meaning that the screen refresh will only be requested to the displayManager for levels equal or larger then this level value.

Parameters:
level screen refresh level
Returns:
TRUE on success

Definition at line 123 of file displayUpdate.cpp.

00124 {
00125     if (level > g_currentLevel)
00126     {
00127         g_currentLevel = level;
00128     }
00129 }

gboolean display_update_request_screen_refresh ( int  level,
gpointer  data 
)

set address of gtk idle callback, where the e-inkt display update is requested

Parameters:
status indicates whether or not not used
data not used
Returns:
TRUE on success

Definition at line 89 of file displayUpdate.cpp.

00090 {
00091     int     theCurrentLevel = display_update_get_level();
00092     int     quality = (int) data;
00093     
00094     if (quality == 0)
00095     {
00096         quality = DM_QUALITY_FULL;
00097     }
00098 
00099     BR_DISPLAYPRINTF("entry level %d currentlevel %d", level, theCurrentLevel);
00100 
00101     if (level >= theCurrentLevel)
00102     {
00103         
00104         gtk_idle_add(display_update_during_idle_handling, (gpointer) quality);
00105 
00106         //reset the current level
00107         display_update_reset_level();
00108 
00109     }
00110     return TRUE;
00111 }

Here is the call graph for this function:

int display_update_reset_level ( void   ) 

Definition at line 118 of file displayUpdate.cpp.

00119 {
00120     g_currentLevel = LOWEST_LEVEL;
00121 }


Variable Documentation

int g_currentLevel = LOWEST_LEVEL [static]

Definition at line 40 of file displayUpdate.cpp.


Generated on Sun Dec 14 17:14:48 2008 by  doxygen 1.5.6