mirror of
https://github.com/FunKey-Project/RetroFE.git
synced 2025-12-12 17:58:53 +01:00
add force refresh screen period
Signed-off-by: Vincent-FK <vincent.buso@funkey-project.com>
This commit is contained in:
parent
43d2eb62c9
commit
41288c5c25
@ -56,7 +56,8 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define REMOVE_TEST_FUNKEY
|
#define REMOVE_TEST_FUNKEY
|
||||||
#define FUNKEY_ALL_POLLEVENT_DELAY 30 //ms
|
#define FUNKEY_ALL_POLLEVENT_DELAY 30 //ms
|
||||||
|
#define PERIOD_FORCE_REFRESH 1000 //ms
|
||||||
|
|
||||||
#define FPS 30 // TODO: set in conf file
|
#define FPS 30 // TODO: set in conf file
|
||||||
|
|
||||||
@ -102,25 +103,31 @@ void RetroFE::render( )
|
|||||||
//SDL_RenderClear( SDL::getRenderer( ) );
|
//SDL_RenderClear( SDL::getRenderer( ) );
|
||||||
SDL_FillRect(SDL::getWindow( ), NULL, SDL_MapRGB(SDL::getWindow( )->format, 0, 0, 0));
|
SDL_FillRect(SDL::getWindow( ), NULL, SDL_MapRGB(SDL::getWindow( )->format, 0, 0, 0));
|
||||||
|
|
||||||
|
#ifdef DEBUG_FPS
|
||||||
uint32_t draw_ticks = SDL_GetTicks();
|
uint32_t draw_ticks = SDL_GetTicks();
|
||||||
|
#endif //DEBUG_FPS
|
||||||
if ( currentPage_ )
|
if ( currentPage_ )
|
||||||
{
|
{
|
||||||
currentPage_->draw( );
|
currentPage_->draw( );
|
||||||
}
|
}
|
||||||
|
#ifdef DEBUG_FPS
|
||||||
int draw_time = SDL_GetTicks()-draw_ticks;
|
int draw_time = SDL_GetTicks()-draw_ticks;
|
||||||
//printf("draw time: %dms\n", draw_time);
|
//printf("draw time: %dms\n", draw_time);
|
||||||
|
#endif //DEBUG_FPS
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef DEBUG_FPS
|
||||||
// DEBUG: Average draw time over FPS*5 frames
|
// DEBUG: Average draw time over FPS*5 frames
|
||||||
static int avg_draw_time = 0;
|
static int avg_draw_time = 0;
|
||||||
static int avg_draw_time_nb_vals = 0;
|
static int avg_draw_time_nb_vals = 0;
|
||||||
avg_draw_time += draw_time;
|
avg_draw_time += draw_time;
|
||||||
avg_draw_time_nb_vals++;
|
avg_draw_time_nb_vals++;
|
||||||
if(avg_draw_time_nb_vals >= FPS*5){
|
if(avg_draw_time_nb_vals >= FPS*5){
|
||||||
DEBUG_FPS_PRINTF("Average draw time: %dms\n", avg_draw_time/avg_draw_time_nb_vals);
|
printf("Average draw time: %dms\n", avg_draw_time/avg_draw_time_nb_vals);
|
||||||
avg_draw_time=0;
|
avg_draw_time=0;
|
||||||
avg_draw_time_nb_vals=0;
|
avg_draw_time_nb_vals=0;
|
||||||
}
|
}
|
||||||
|
#endif //DEBUG_FPS
|
||||||
|
|
||||||
//SDL_RenderPresent( SDL::getRenderer( ) );
|
//SDL_RenderPresent( SDL::getRenderer( ) );
|
||||||
//SDL_Flip(SDL::getWindow( ));
|
//SDL_Flip(SDL::getWindow( ));
|
||||||
@ -303,114 +310,114 @@ bool RetroFE::deInitialize( )
|
|||||||
|
|
||||||
// Print State
|
// Print State
|
||||||
void RetroFE::printState(RETROFE_STATE state){
|
void RetroFE::printState(RETROFE_STATE state){
|
||||||
switch(state){
|
switch(state){
|
||||||
case RETROFE_IDLE:
|
case RETROFE_IDLE:
|
||||||
printf("RETROFE_IDLE");
|
printf("RETROFE_IDLE");
|
||||||
break;
|
break;
|
||||||
case RETROFE_LOAD_ART:
|
case RETROFE_LOAD_ART:
|
||||||
printf("RETROFE_LOAD_ART");
|
printf("RETROFE_LOAD_ART");
|
||||||
break;
|
break;
|
||||||
case RETROFE_ENTER:
|
case RETROFE_ENTER:
|
||||||
printf("RETROFE_ENTER");
|
printf("RETROFE_ENTER");
|
||||||
break;
|
break;
|
||||||
case RETROFE_SPLASH_EXIT:
|
case RETROFE_SPLASH_EXIT:
|
||||||
printf("RETROFE_SPLASH_EXIT");
|
printf("RETROFE_SPLASH_EXIT");
|
||||||
break;
|
break;
|
||||||
case RETROFE_PLAYLIST_REQUEST:
|
case RETROFE_PLAYLIST_REQUEST:
|
||||||
printf("RETROFE_PLAYLIST_REQUEST");
|
printf("RETROFE_PLAYLIST_REQUEST");
|
||||||
break;
|
break;
|
||||||
case RETROFE_PLAYLIST_EXIT:
|
case RETROFE_PLAYLIST_EXIT:
|
||||||
printf("RETROFE_PLAYLIST_EXIT");
|
printf("RETROFE_PLAYLIST_EXIT");
|
||||||
break;
|
break;
|
||||||
case RETROFE_PLAYLIST_LOAD_ART:
|
case RETROFE_PLAYLIST_LOAD_ART:
|
||||||
printf("RETROFE_PLAYLIST_LOAD_ART");
|
printf("RETROFE_PLAYLIST_LOAD_ART");
|
||||||
break;
|
break;
|
||||||
case RETROFE_PLAYLIST_ENTER:
|
case RETROFE_PLAYLIST_ENTER:
|
||||||
printf("RETROFE_PLAYLIST_ENTER");
|
printf("RETROFE_PLAYLIST_ENTER");
|
||||||
break;
|
break;
|
||||||
case RETROFE_MENUJUMP_REQUEST:
|
case RETROFE_MENUJUMP_REQUEST:
|
||||||
printf("RETROFE_MENUJUMP_REQUEST");
|
printf("RETROFE_MENUJUMP_REQUEST");
|
||||||
break;
|
break;
|
||||||
case RETROFE_MENUJUMP_EXIT:
|
case RETROFE_MENUJUMP_EXIT:
|
||||||
printf("RETROFE_MENUJUMP_EXIT");
|
printf("RETROFE_MENUJUMP_EXIT");
|
||||||
break;
|
break;
|
||||||
case RETROFE_MENUJUMP_LOAD_ART:
|
case RETROFE_MENUJUMP_LOAD_ART:
|
||||||
printf("RETROFE_MENUJUMP_LOAD_ART");
|
printf("RETROFE_MENUJUMP_LOAD_ART");
|
||||||
break;
|
break;
|
||||||
case RETROFE_MENUJUMP_ENTER:
|
case RETROFE_MENUJUMP_ENTER:
|
||||||
printf("RETROFE_MENUJUMP_ENTER");
|
printf("RETROFE_MENUJUMP_ENTER");
|
||||||
break;
|
break;
|
||||||
case RETROFE_HIGHLIGHT_REQUEST:
|
case RETROFE_HIGHLIGHT_REQUEST:
|
||||||
printf("RETROFE_HIGHLIGHT_REQUEST");
|
printf("RETROFE_HIGHLIGHT_REQUEST");
|
||||||
break;
|
break;
|
||||||
case RETROFE_HIGHLIGHT_EXIT:
|
case RETROFE_HIGHLIGHT_EXIT:
|
||||||
printf("RETROFE_HIGHLIGHT_EXIT");
|
printf("RETROFE_HIGHLIGHT_EXIT");
|
||||||
break;
|
break;
|
||||||
case RETROFE_HIGHLIGHT_LOAD_ART:
|
case RETROFE_HIGHLIGHT_LOAD_ART:
|
||||||
printf("RETROFE_HIGHLIGHT_LOAD_ART");
|
printf("RETROFE_HIGHLIGHT_LOAD_ART");
|
||||||
break;
|
break;
|
||||||
case RETROFE_HIGHLIGHT_ENTER:
|
case RETROFE_HIGHLIGHT_ENTER:
|
||||||
printf("RETROFE_HIGHLIGHT_ENTER");
|
printf("RETROFE_HIGHLIGHT_ENTER");
|
||||||
break;
|
break;
|
||||||
case RETROFE_NEXT_PAGE_REQUEST:
|
case RETROFE_NEXT_PAGE_REQUEST:
|
||||||
printf("RETROFE_NEXT_PAGE_REQUEST");
|
printf("RETROFE_NEXT_PAGE_REQUEST");
|
||||||
break;
|
break;
|
||||||
case RETROFE_NEXT_PAGE_MENU_EXIT:
|
case RETROFE_NEXT_PAGE_MENU_EXIT:
|
||||||
printf("RETROFE_NEXT_PAGE_MENU_EXIT");
|
printf("RETROFE_NEXT_PAGE_MENU_EXIT");
|
||||||
break;
|
break;
|
||||||
case RETROFE_NEXT_PAGE_MENU_LOAD_ART:
|
case RETROFE_NEXT_PAGE_MENU_LOAD_ART:
|
||||||
printf("RETROFE_NEXT_PAGE_MENU_LOAD_ART");
|
printf("RETROFE_NEXT_PAGE_MENU_LOAD_ART");
|
||||||
break;
|
break;
|
||||||
case RETROFE_NEXT_PAGE_MENU_ENTER:
|
case RETROFE_NEXT_PAGE_MENU_ENTER:
|
||||||
printf("RETROFE_NEXT_PAGE_MENU_ENTER");
|
printf("RETROFE_NEXT_PAGE_MENU_ENTER");
|
||||||
break;
|
break;
|
||||||
case RETROFE_HANDLE_MENUENTRY:
|
case RETROFE_HANDLE_MENUENTRY:
|
||||||
printf("RETROFE_HANDLE_MENUENTRY");
|
printf("RETROFE_HANDLE_MENUENTRY");
|
||||||
break;
|
break;
|
||||||
case RETROFE_LAUNCH_ENTER:
|
case RETROFE_LAUNCH_ENTER:
|
||||||
printf("RETROFE_LAUNCH_ENTER");
|
printf("RETROFE_LAUNCH_ENTER");
|
||||||
break;
|
break;
|
||||||
case RETROFE_LAUNCH_REQUEST:
|
case RETROFE_LAUNCH_REQUEST:
|
||||||
printf("RETROFE_LAUNCH_REQUEST");
|
printf("RETROFE_LAUNCH_REQUEST");
|
||||||
break;
|
break;
|
||||||
case RETROFE_LAUNCH_EXIT:
|
case RETROFE_LAUNCH_EXIT:
|
||||||
printf("RETROFE_LAUNCH_EXIT");
|
printf("RETROFE_LAUNCH_EXIT");
|
||||||
break;
|
break;
|
||||||
case RETROFE_BACK_REQUEST:
|
case RETROFE_BACK_REQUEST:
|
||||||
printf("RETROFE_BACK_REQUEST");
|
printf("RETROFE_BACK_REQUEST");
|
||||||
break;
|
break;
|
||||||
case RETROFE_BACK_MENU_EXIT:
|
case RETROFE_BACK_MENU_EXIT:
|
||||||
printf("RETROFE_BACK_MENU_EXIT");
|
printf("RETROFE_BACK_MENU_EXIT");
|
||||||
break;
|
break;
|
||||||
case RETROFE_BACK_MENU_LOAD_ART:
|
case RETROFE_BACK_MENU_LOAD_ART:
|
||||||
printf("RETROFE_BACK_MENU_LOAD_ART");
|
printf("RETROFE_BACK_MENU_LOAD_ART");
|
||||||
break;
|
break;
|
||||||
case RETROFE_BACK_MENU_ENTER:
|
case RETROFE_BACK_MENU_ENTER:
|
||||||
printf("RETROFE_BACK_MENU_ENTER");
|
printf("RETROFE_BACK_MENU_ENTER");
|
||||||
break;
|
break;
|
||||||
case RETROFE_MENUMODE_START_REQUEST:
|
case RETROFE_MENUMODE_START_REQUEST:
|
||||||
printf("RETROFE_MENUMODE_START_REQUEST");
|
printf("RETROFE_MENUMODE_START_REQUEST");
|
||||||
break;
|
break;
|
||||||
case RETROFE_MENUMODE_START_LOAD_ART:
|
case RETROFE_MENUMODE_START_LOAD_ART:
|
||||||
printf("RETROFE_MENUMODE_START_LOAD_ART");
|
printf("RETROFE_MENUMODE_START_LOAD_ART");
|
||||||
break;
|
break;
|
||||||
case RETROFE_MENUMODE_START_ENTER:
|
case RETROFE_MENUMODE_START_ENTER:
|
||||||
printf("RETROFE_MENUMODE_START_ENTER");
|
printf("RETROFE_MENUMODE_START_ENTER");
|
||||||
break;
|
break;
|
||||||
case RETROFE_NEW:
|
case RETROFE_NEW:
|
||||||
printf("RETROFE_NEW");
|
printf("RETROFE_NEW");
|
||||||
break;
|
break;
|
||||||
case RETROFE_QUIT_REQUEST:
|
case RETROFE_QUIT_REQUEST:
|
||||||
printf("RETROFE_QUIT_REQUEST");
|
printf("RETROFE_QUIT_REQUEST");
|
||||||
break;
|
break;
|
||||||
case RETROFE_QUIT:
|
case RETROFE_QUIT:
|
||||||
printf("RETROFE_QUIT");
|
printf("RETROFE_QUIT");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
printf("STATE UNDEFINED:%d", state);
|
printf("STATE UNDEFINED:%d", state);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -434,6 +441,13 @@ void RetroFE::run( )
|
|||||||
}
|
}
|
||||||
|
|
||||||
float preloadTime = 0;
|
float preloadTime = 0;
|
||||||
|
int current_sdl_ticks = 0;
|
||||||
|
int process_time = 0;
|
||||||
|
|
||||||
|
// Force refresh variables
|
||||||
|
#ifdef PERIOD_FORCE_REFRESH
|
||||||
|
int ticks_last_refresh = 0;
|
||||||
|
#endif //PERIOD_FORCE_REFRESH
|
||||||
|
|
||||||
// Initialize video
|
// Initialize video
|
||||||
bool videoEnable = true;
|
bool videoEnable = true;
|
||||||
@ -1004,7 +1018,7 @@ void RetroFE::run( )
|
|||||||
while ( SDL_PollEvent( &ev ) );
|
while ( SDL_PollEvent( &ev ) );
|
||||||
input_.resetStates( );
|
input_.resetStates( );
|
||||||
state = RETROFE_IDLE;
|
state = RETROFE_IDLE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RETROFE_MENUMODE_START_LOAD_ART:
|
case RETROFE_MENUMODE_START_LOAD_ART:
|
||||||
//currentPage_->start();
|
//currentPage_->start();
|
||||||
@ -1063,30 +1077,29 @@ void RetroFE::run( )
|
|||||||
SDL_Delay( static_cast<unsigned int>( sleepTime ) );
|
SDL_Delay( static_cast<unsigned int>( sleepTime ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if previous update of page needed to be rendered
|
// ------- Check if previous update of page needed to be rendered -------
|
||||||
if(!currentPage_->isIdle( ) || splashMode){
|
if(!currentPage_->isIdle( ) || splashMode){
|
||||||
must_render = true;
|
must_render = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle current pages updates
|
// Force refresh variables
|
||||||
|
#ifdef PERIOD_FORCE_REFRESH
|
||||||
|
if(SDL_GetTicks() - ticks_last_refresh > PERIOD_FORCE_REFRESH){
|
||||||
|
must_render = true;
|
||||||
|
//printf("force render\n");
|
||||||
|
}
|
||||||
|
#endif //PERIOD_FORCE_REFRESH
|
||||||
|
|
||||||
|
// ------- Handle current pages updates -------
|
||||||
if ( currentPage_ )
|
if ( currentPage_ )
|
||||||
{
|
{
|
||||||
#ifndef REMOVE_TEST_FUNKEY
|
|
||||||
if (!splashMode)
|
|
||||||
{
|
|
||||||
attract_.update( deltaTime, *currentPage_ );
|
|
||||||
}
|
|
||||||
if ( menuMode_ )
|
|
||||||
{
|
|
||||||
attract_.reset( );
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
currentPage_->update( deltaTime );
|
currentPage_->update( deltaTime );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Real render here
|
// ------- Real render here -------
|
||||||
if(must_render){
|
if(must_render){
|
||||||
render( );
|
render( );
|
||||||
|
ticks_last_refresh = SDL_GetTicks();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user