mirror of
https://github.com/FunKey-Project/RetroFE.git
synced 2025-12-12 17:58:53 +01:00
BUG correction: text not cleared on deallocation, better state printing in state machine
Signed-off-by: Vincent-FK <vincent.buso@funkey-project.com>
This commit is contained in:
parent
c96bd40a9b
commit
5bb70b02eb
@ -287,10 +287,12 @@ bool CollectionInfoBuilder::ImportDirectory(CollectionInfo *info, std::string me
|
||||
bool showMissing = false;
|
||||
bool romHierarchy = false;
|
||||
bool truRIP = false;
|
||||
|
||||
/* Clear Item list */
|
||||
//info->items.clear();
|
||||
|
||||
if (mergedCollectionName != "")
|
||||
{
|
||||
|
||||
std::string mergedFile = Utils::combinePath(Configuration::absolutePath, "collections", mergedCollectionName, info->name + ".sub");
|
||||
Logger::write(Logger::ZONE_INFO, "CollectionInfoBuilder", "Checking for \"" + mergedFile + "\"");
|
||||
(void)conf_.getProperty("collections." + mergedCollectionName + ".list.includeMissingItems", showMissing);
|
||||
|
||||
@ -152,6 +152,7 @@ void ScrollingList::deallocateSpritePoints( )
|
||||
|
||||
void ScrollingList::allocateSpritePoints( )
|
||||
{
|
||||
|
||||
if ( !items_ || items_->size( ) == 0 ) return;
|
||||
if ( !scrollPoints_ ) return;
|
||||
if ( components_.size( ) == 0 ) return;
|
||||
@ -611,6 +612,7 @@ bool ScrollingList::allocateTexture( unsigned int index, Item *item )
|
||||
|
||||
for ( unsigned int n = 0; n < names.size() && !t; ++n )
|
||||
{
|
||||
|
||||
// check collection path for art
|
||||
if ( layoutMode_ )
|
||||
{
|
||||
|
||||
@ -35,11 +35,13 @@ Text::Text( std::string text, Page &p, Font *font, float scaleX, float scaleY )
|
||||
Text::~Text( )
|
||||
{
|
||||
freeGraphicsMemory( );
|
||||
textData_.clear();
|
||||
}
|
||||
|
||||
void Text::freeGraphicsMemory( )
|
||||
{
|
||||
Component::freeGraphicsMemory( );
|
||||
textData_.clear();
|
||||
}
|
||||
|
||||
void Text::allocateGraphicsMemory( )
|
||||
|
||||
@ -806,7 +806,6 @@ bool Page::popCollection()
|
||||
|
||||
void Page::enterMenu()
|
||||
{
|
||||
|
||||
for(MenuVector_T::iterator it = menus_.begin(); it != menus_.end(); it++)
|
||||
{
|
||||
for(std::vector<ScrollingList *>::iterator it2 = menus_[std::distance(menus_.begin(), it)].begin(); it2 != menus_[std::distance(menus_.begin(), it)].end(); it2++)
|
||||
|
||||
@ -313,118 +313,6 @@ bool RetroFE::deInitialize( )
|
||||
return retVal;
|
||||
}
|
||||
|
||||
// Print State
|
||||
void RetroFE::printState(RETROFE_STATE state){
|
||||
switch(state){
|
||||
case RETROFE_IDLE:
|
||||
printf("RETROFE_IDLE");
|
||||
break;
|
||||
case RETROFE_LOAD_ART:
|
||||
printf("RETROFE_LOAD_ART");
|
||||
break;
|
||||
case RETROFE_ENTER:
|
||||
printf("RETROFE_ENTER");
|
||||
break;
|
||||
case RETROFE_SPLASH_EXIT:
|
||||
printf("RETROFE_SPLASH_EXIT");
|
||||
break;
|
||||
case RETROFE_PLAYLIST_REQUEST:
|
||||
printf("RETROFE_PLAYLIST_REQUEST");
|
||||
break;
|
||||
case RETROFE_PLAYLIST_EXIT:
|
||||
printf("RETROFE_PLAYLIST_EXIT");
|
||||
break;
|
||||
case RETROFE_PLAYLIST_LOAD_ART:
|
||||
printf("RETROFE_PLAYLIST_LOAD_ART");
|
||||
break;
|
||||
case RETROFE_PLAYLIST_ENTER:
|
||||
printf("RETROFE_PLAYLIST_ENTER");
|
||||
break;
|
||||
case RETROFE_MENUJUMP_REQUEST:
|
||||
printf("RETROFE_MENUJUMP_REQUEST");
|
||||
break;
|
||||
case RETROFE_MENUJUMP_EXIT:
|
||||
printf("RETROFE_MENUJUMP_EXIT");
|
||||
break;
|
||||
case RETROFE_MENUJUMP_LOAD_ART:
|
||||
printf("RETROFE_MENUJUMP_LOAD_ART");
|
||||
break;
|
||||
case RETROFE_MENUJUMP_ENTER:
|
||||
printf("RETROFE_MENUJUMP_ENTER");
|
||||
break;
|
||||
case RETROFE_HIGHLIGHT_REQUEST:
|
||||
printf("RETROFE_HIGHLIGHT_REQUEST");
|
||||
break;
|
||||
case RETROFE_HIGHLIGHT_EXIT:
|
||||
printf("RETROFE_HIGHLIGHT_EXIT");
|
||||
break;
|
||||
case RETROFE_HIGHLIGHT_LOAD_ART:
|
||||
printf("RETROFE_HIGHLIGHT_LOAD_ART");
|
||||
break;
|
||||
case RETROFE_HIGHLIGHT_ENTER:
|
||||
printf("RETROFE_HIGHLIGHT_ENTER");
|
||||
break;
|
||||
case RETROFE_NEXT_PAGE_REQUEST:
|
||||
printf("RETROFE_NEXT_PAGE_REQUEST");
|
||||
break;
|
||||
case RETROFE_NEXT_PAGE_MENU_EXIT:
|
||||
printf("RETROFE_NEXT_PAGE_MENU_EXIT");
|
||||
break;
|
||||
case RETROFE_NEXT_PAGE_MENU_LOAD_ART:
|
||||
printf("RETROFE_NEXT_PAGE_MENU_LOAD_ART");
|
||||
break;
|
||||
case RETROFE_NEXT_PAGE_MENU_ENTER:
|
||||
printf("RETROFE_NEXT_PAGE_MENU_ENTER");
|
||||
break;
|
||||
case RETROFE_HANDLE_MENUENTRY:
|
||||
printf("RETROFE_HANDLE_MENUENTRY");
|
||||
break;
|
||||
case RETROFE_LAUNCH_ENTER:
|
||||
printf("RETROFE_LAUNCH_ENTER");
|
||||
break;
|
||||
case RETROFE_LAUNCH_REQUEST:
|
||||
printf("RETROFE_LAUNCH_REQUEST");
|
||||
break;
|
||||
case RETROFE_LAUNCH_EXIT:
|
||||
printf("RETROFE_LAUNCH_EXIT");
|
||||
break;
|
||||
case RETROFE_BACK_REQUEST:
|
||||
printf("RETROFE_BACK_REQUEST");
|
||||
break;
|
||||
case RETROFE_BACK_MENU_EXIT:
|
||||
printf("RETROFE_BACK_MENU_EXIT");
|
||||
break;
|
||||
case RETROFE_BACK_MENU_LOAD_ART:
|
||||
printf("RETROFE_BACK_MENU_LOAD_ART");
|
||||
break;
|
||||
case RETROFE_BACK_MENU_ENTER:
|
||||
printf("RETROFE_BACK_MENU_ENTER");
|
||||
break;
|
||||
case RETROFE_MENUMODE_START_REQUEST:
|
||||
printf("RETROFE_MENUMODE_START_REQUEST");
|
||||
break;
|
||||
case RETROFE_MENUMODE_START_LOAD_ART:
|
||||
printf("RETROFE_MENUMODE_START_LOAD_ART");
|
||||
break;
|
||||
case RETROFE_MENUMODE_START_ENTER:
|
||||
printf("RETROFE_MENUMODE_START_ENTER");
|
||||
break;
|
||||
case RETROFE_NEW:
|
||||
printf("RETROFE_NEW");
|
||||
break;
|
||||
case RETROFE_QUIT_REQUEST:
|
||||
printf("RETROFE_QUIT_REQUEST");
|
||||
break;
|
||||
case RETROFE_QUIT:
|
||||
printf("RETROFE_QUIT");
|
||||
break;
|
||||
default:
|
||||
printf("STATE UNDEFINED:%d", state);
|
||||
break;
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
|
||||
// Run RetroFE
|
||||
void RetroFE::run( )
|
||||
@ -479,6 +367,7 @@ void RetroFE::run( )
|
||||
bool running = true;
|
||||
bool initInBackground = false;
|
||||
config_.getProperty( "initInBackground", initInBackground );
|
||||
|
||||
RETROFE_STATE state = RETROFE_NEW;
|
||||
|
||||
config_.getProperty( "attractModeTime", attractModeTime );
|
||||
@ -526,9 +415,19 @@ void RetroFE::run( )
|
||||
break;
|
||||
}
|
||||
|
||||
// Uncomment to print State for debug purposes
|
||||
//printState(state);
|
||||
// Print state for debug purposes
|
||||
#if 0
|
||||
static RETROFE_STATE prev_state = state;
|
||||
#undef X
|
||||
#define X(a, b) b,
|
||||
static const char *retrofe_states_str[] = {RETROFE_STATES};
|
||||
if(prev_state != state){
|
||||
printf("RetroFE new state: %s\n", retrofe_states_str[state]);
|
||||
prev_state = state;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Main state machine
|
||||
switch(state)
|
||||
{
|
||||
|
||||
@ -694,6 +593,7 @@ void RetroFE::run( )
|
||||
{
|
||||
currentPage_->reallocateMenuSpritePoints( );
|
||||
currentPage_->menuJumpEnter( );
|
||||
forceRender(true);
|
||||
state = RETROFE_MENUJUMP_ENTER;
|
||||
}
|
||||
break;
|
||||
@ -805,7 +705,9 @@ void RetroFE::run( )
|
||||
}
|
||||
|
||||
currentPage_->onNewItemSelected( );
|
||||
printf("\nbefore currentPage_->reallocateMenuSpritePoints()\n");
|
||||
currentPage_->reallocateMenuSpritePoints( );
|
||||
printf("after currentPage_->reallocateMenuSpritePoints()\n\n");
|
||||
|
||||
state = RETROFE_NEXT_PAGE_MENU_LOAD_ART;
|
||||
|
||||
@ -1061,6 +963,14 @@ void RetroFE::run( )
|
||||
running = false;
|
||||
}
|
||||
break;
|
||||
|
||||
// Unknown state
|
||||
default:
|
||||
std::stringstream ss;
|
||||
ss << "Wrong state: " << state;
|
||||
Logger::write( Logger::ZONE_ERROR, "RetroFE", "Wrong state: " + ss.str() );
|
||||
state = RETROFE_IDLE;
|
||||
break;
|
||||
}
|
||||
|
||||
// Handle screen updates and attract mode
|
||||
|
||||
@ -31,6 +31,44 @@
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
/* State machine states */
|
||||
#define RETROFE_STATES \
|
||||
X(RETROFE_IDLE, "RETROFE_IDLE") \
|
||||
X(RETROFE_LOAD_ART, "RETROFE_LOAD_ART") \
|
||||
X(RETROFE_ENTER, "RETROFE_ENTER") \
|
||||
X(RETROFE_SPLASH_EXIT, "RETROFE_SPLASH_EXIT") \
|
||||
X(RETROFE_PLAYLIST_REQUEST, "RETROFE_PLAYLIST_REQUEST") \
|
||||
X(RETROFE_PLAYLIST_EXIT, "RETROFE_PLAYLIST_EXIT") \
|
||||
X(RETROFE_PLAYLIST_LOAD_ART, "RETROFE_PLAYLIST_LOAD_ART") \
|
||||
X(RETROFE_PLAYLIST_ENTER, "RETROFE_PLAYLIST_ENTER") \
|
||||
X(RETROFE_MENUJUMP_REQUEST, "RETROFE_MENUJUMP_REQUEST") \
|
||||
X(RETROFE_MENUJUMP_EXIT, "RETROFE_MENUJUMP_EXIT") \
|
||||
X(RETROFE_MENUJUMP_LOAD_ART, "RETROFE_MENUJUMP_LOAD_ART") \
|
||||
X(RETROFE_MENUJUMP_ENTER, "RETROFE_MENUJUMP_ENTER") \
|
||||
X(RETROFE_HIGHLIGHT_REQUEST, "RETROFE_HIGHLIGHT_REQUEST") \
|
||||
X(RETROFE_HIGHLIGHT_EXIT, "RETROFE_HIGHLIGHT_EXIT") \
|
||||
X(RETROFE_HIGHLIGHT_LOAD_ART, "RETROFE_HIGHLIGHT_LOAD_ART") \
|
||||
X(RETROFE_HIGHLIGHT_ENTER, "RETROFE_HIGHLIGHT_ENTER") \
|
||||
X(RETROFE_NEXT_PAGE_REQUEST, "RETROFE_NEXT_PAGE_REQUEST") \
|
||||
X(RETROFE_NEXT_PAGE_MENU_EXIT, "RETROFE_NEXT_PAGE_MENU_EXIT") \
|
||||
X(RETROFE_NEXT_PAGE_MENU_LOAD_ART, "RETROFE_NEXT_PAGE_MENU_LOAD_ART") \
|
||||
X(RETROFE_NEXT_PAGE_MENU_ENTER, "RETROFE_NEXT_PAGE_MENU_ENTER") \
|
||||
X(RETROFE_HANDLE_MENUENTRY, "RETROFE_HANDLE_MENUENTRY") \
|
||||
X(RETROFE_LAUNCH_ENTER, "RETROFE_LAUNCH_ENTER") \
|
||||
X(RETROFE_LAUNCH_REQUEST, "RETROFE_LAUNCH_REQUEST") \
|
||||
X(RETROFE_LAUNCH_EXIT, "RETROFE_LAUNCH_EXIT") \
|
||||
X(RETROFE_BACK_REQUEST, "RETROFE_BACK_REQUEST") \
|
||||
X(RETROFE_BACK_MENU_EXIT, "RETROFE_BACK_MENU_EXIT") \
|
||||
X(RETROFE_BACK_MENU_LOAD_ART, "RETROFE_BACK_MENU_LOAD_ART") \
|
||||
X(RETROFE_BACK_MENU_ENTER, "RETROFE_BACK_MENU_ENTER") \
|
||||
X(RETROFE_MENUMODE_START_REQUEST, "RETROFE_MENUMODE_START_REQUEST") \
|
||||
X(RETROFE_MENUMODE_START_LOAD_ART, "RETROFE_MENUMODE_START_LOAD_ART") \
|
||||
X(RETROFE_MENUMODE_START_ENTER, "RETROFE_MENUMODE_START_ENTER") \
|
||||
X(RETROFE_NEW, "RETROFE_NEW") \
|
||||
X(RETROFE_QUIT_REQUEST, "RETROFE_QUIT_REQUEST") \
|
||||
X(RETROFE_QUIT, "RETROFE_QUIT") \
|
||||
X(NB_RETROFE_STATES, "")
|
||||
|
||||
|
||||
class CollectionInfo;
|
||||
class Configuration;
|
||||
@ -57,43 +95,9 @@ private:
|
||||
SDL_Thread *initializeThread;
|
||||
static int initialize( void *context );
|
||||
|
||||
enum RETROFE_STATE
|
||||
{
|
||||
RETROFE_IDLE,
|
||||
RETROFE_LOAD_ART,
|
||||
RETROFE_ENTER,
|
||||
RETROFE_SPLASH_EXIT,
|
||||
RETROFE_PLAYLIST_REQUEST,
|
||||
RETROFE_PLAYLIST_EXIT,
|
||||
RETROFE_PLAYLIST_LOAD_ART,
|
||||
RETROFE_PLAYLIST_ENTER,
|
||||
RETROFE_MENUJUMP_REQUEST,
|
||||
RETROFE_MENUJUMP_EXIT,
|
||||
RETROFE_MENUJUMP_LOAD_ART,
|
||||
RETROFE_MENUJUMP_ENTER,
|
||||
RETROFE_HIGHLIGHT_REQUEST,
|
||||
RETROFE_HIGHLIGHT_EXIT,
|
||||
RETROFE_HIGHLIGHT_LOAD_ART,
|
||||
RETROFE_HIGHLIGHT_ENTER,
|
||||
RETROFE_NEXT_PAGE_REQUEST,
|
||||
RETROFE_NEXT_PAGE_MENU_EXIT,
|
||||
RETROFE_NEXT_PAGE_MENU_LOAD_ART,
|
||||
RETROFE_NEXT_PAGE_MENU_ENTER,
|
||||
RETROFE_HANDLE_MENUENTRY,
|
||||
RETROFE_LAUNCH_ENTER,
|
||||
RETROFE_LAUNCH_REQUEST,
|
||||
RETROFE_LAUNCH_EXIT,
|
||||
RETROFE_BACK_REQUEST,
|
||||
RETROFE_BACK_MENU_EXIT,
|
||||
RETROFE_BACK_MENU_LOAD_ART,
|
||||
RETROFE_BACK_MENU_ENTER,
|
||||
RETROFE_MENUMODE_START_REQUEST,
|
||||
RETROFE_MENUMODE_START_LOAD_ART,
|
||||
RETROFE_MENUMODE_START_ENTER,
|
||||
RETROFE_NEW,
|
||||
RETROFE_QUIT_REQUEST,
|
||||
RETROFE_QUIT,
|
||||
};
|
||||
#undef X
|
||||
#define X(a, b) a,
|
||||
enum RETROFE_STATE {RETROFE_STATES};
|
||||
|
||||
void render( );
|
||||
bool back( bool &exit );
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user