poll for memory cards in the editor screens even if MemoryCard=0
This commit is contained in:
@@ -10,8 +10,9 @@
|
|||||||
#include "MessageManager.h"
|
#include "MessageManager.h"
|
||||||
#include "Foreach.h"
|
#include "Foreach.h"
|
||||||
#include "RageUtil_WorkerThread.h"
|
#include "RageUtil_WorkerThread.h"
|
||||||
|
|
||||||
#include "arch/arch.h"
|
#include "arch/arch.h"
|
||||||
|
#include "arch/MemoryCard/MemoryCardDriver_Null.h"
|
||||||
|
#include "PrefsManager.h"
|
||||||
|
|
||||||
MemoryCardManager* MEMCARDMAN = NULL; // global and accessable from anywhere in our program
|
MemoryCardManager* MEMCARDMAN = NULL; // global and accessable from anywhere in our program
|
||||||
|
|
||||||
@@ -66,7 +67,7 @@ static const RString MEM_CARD_MOUNT_POINT_INTERNAL[NUM_PLAYERS] =
|
|||||||
class ThreadedMemoryCardWorker: public RageWorkerThread
|
class ThreadedMemoryCardWorker: public RageWorkerThread
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThreadedMemoryCardWorker();
|
ThreadedMemoryCardWorker( bool bInEditScreens );
|
||||||
~ThreadedMemoryCardWorker();
|
~ThreadedMemoryCardWorker();
|
||||||
|
|
||||||
enum MountThreadState
|
enum MountThreadState
|
||||||
@@ -131,11 +132,15 @@ bool ThreadedMemoryCardWorker::StorageDevicesChanged( vector<UsbStorageDevice> &
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ThreadedMemoryCardWorker::ThreadedMemoryCardWorker():
|
ThreadedMemoryCardWorker::ThreadedMemoryCardWorker( bool bInEditScreens ):
|
||||||
RageWorkerThread("MemoryCardWorker"),
|
RageWorkerThread("MemoryCardWorker"),
|
||||||
UsbStorageDevicesMutex("UsbStorageDevicesMutex")
|
UsbStorageDevicesMutex("UsbStorageDevicesMutex")
|
||||||
{
|
{
|
||||||
m_pDriver = MakeMemoryCardDriver();
|
if( PREFSMAN->m_bMemoryCards || bInEditScreens )
|
||||||
|
m_pDriver = MakeMemoryCardDriver();
|
||||||
|
else
|
||||||
|
m_pDriver = new MemoryCardDriver_Null;
|
||||||
|
|
||||||
m_MountThreadState = detect_and_mount;
|
m_MountThreadState = detect_and_mount;
|
||||||
SetHeartbeat( 0.1f );
|
SetHeartbeat( 0.1f );
|
||||||
|
|
||||||
@@ -149,6 +154,8 @@ ThreadedMemoryCardWorker::~ThreadedMemoryCardWorker()
|
|||||||
delete m_pDriver;
|
delete m_pDriver;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void ThreadedMemoryCardWorker::SetMountThreadState( MountThreadState mts )
|
void ThreadedMemoryCardWorker::SetMountThreadState( MountThreadState mts )
|
||||||
{
|
{
|
||||||
/* If "pause", stop calling updates in the heartbeat. In principle, we should
|
/* If "pause", stop calling updates in the heartbeat. In principle, we should
|
||||||
@@ -249,7 +256,7 @@ MemoryCardManager::MemoryCardManager()
|
|||||||
{
|
{
|
||||||
ASSERT( g_pWorker == NULL );
|
ASSERT( g_pWorker == NULL );
|
||||||
|
|
||||||
g_pWorker = new ThreadedMemoryCardWorker;
|
g_pWorker = new ThreadedMemoryCardWorker( false );
|
||||||
|
|
||||||
m_bCardsLocked = false;
|
m_bCardsLocked = false;
|
||||||
FOREACH_PlayerNumber( p )
|
FOREACH_PlayerNumber( p )
|
||||||
@@ -286,6 +293,12 @@ MemoryCardManager::~MemoryCardManager()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MemoryCardManager::ResetMemoryCardDriver( bool bInEditScreens )
|
||||||
|
{
|
||||||
|
SAFE_DELETE(g_pWorker);
|
||||||
|
g_pWorker = new ThreadedMemoryCardWorker( bInEditScreens );
|
||||||
|
}
|
||||||
|
|
||||||
void MemoryCardManager::Update( float fDelta )
|
void MemoryCardManager::Update( float fDelta )
|
||||||
{
|
{
|
||||||
vector<UsbStorageDevice> vOld;
|
vector<UsbStorageDevice> vOld;
|
||||||
@@ -669,8 +682,40 @@ bool IsAnyPlayerUsingMemoryCard()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "LuaFunctions.h"
|
|
||||||
LuaFunction_NoArgs( IsAnyPlayerUsingMemoryCard, IsAnyPlayerUsingMemoryCard() )
|
// lua start
|
||||||
|
#include "LuaBinding.h"
|
||||||
|
|
||||||
|
class LunaMemoryCardManager: public Luna<MemoryCardManager>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LunaMemoryCardManager() { LUA->Register( Register ); }
|
||||||
|
|
||||||
|
static int IsAnyPlayerUsingMemoryCard( T* p, lua_State *L ) { lua_pushboolean(L, ::IsAnyPlayerUsingMemoryCard() ); return 1; }
|
||||||
|
static int ResetMemoryCardDriver( T* p, lua_State *L ) { p->ResetMemoryCardDriver( BArg(1) ); return 0; }
|
||||||
|
|
||||||
|
static void Register(lua_State *L)
|
||||||
|
{
|
||||||
|
ADD_METHOD( IsAnyPlayerUsingMemoryCard );
|
||||||
|
ADD_METHOD( ResetMemoryCardDriver );
|
||||||
|
|
||||||
|
Luna<T>::Register( L );
|
||||||
|
|
||||||
|
// Add global singleton if constructed already. If it's not constructed yet,
|
||||||
|
// then we'll register it later when we reinit Lua just before
|
||||||
|
// initializing the display.
|
||||||
|
if( MEMCARDMAN )
|
||||||
|
{
|
||||||
|
lua_pushstring(L, "MEMCARDMAN");
|
||||||
|
MEMCARDMAN->PushSelf( L );
|
||||||
|
lua_settable(L, LUA_GLOBALSINDEX);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
LUA_REGISTER_CLASS( MemoryCardManager )
|
||||||
|
// lua end
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (c) 2003-2005 Chris Danford, Glenn Maynard
|
* (c) 2003-2005 Chris Danford, Glenn Maynard
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ public:
|
|||||||
MemoryCardManager();
|
MemoryCardManager();
|
||||||
~MemoryCardManager();
|
~MemoryCardManager();
|
||||||
|
|
||||||
|
void ResetMemoryCardDriver( bool bInEditScreens );
|
||||||
|
|
||||||
void Update( float fDelta );
|
void Update( float fDelta );
|
||||||
|
|
||||||
MemoryCardState GetCardState( PlayerNumber pn ) const { return m_State[pn]; }
|
MemoryCardState GetCardState( PlayerNumber pn ) const { return m_State[pn]; }
|
||||||
@@ -49,6 +51,9 @@ public:
|
|||||||
|
|
||||||
static Preference<RString> m_sEditorMemoryCardOsMountPoint;
|
static Preference<RString> m_sEditorMemoryCardOsMountPoint;
|
||||||
|
|
||||||
|
// Lua
|
||||||
|
void PushSelf( lua_State *L );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void CheckStateChanges();
|
void CheckStateChanges();
|
||||||
|
|
||||||
|
|||||||
@@ -161,9 +161,6 @@ LowLevelWindow *MakeLowLevelWindow()
|
|||||||
#include "MemoryCard/Selector_MemoryCardDriver.h"
|
#include "MemoryCard/Selector_MemoryCardDriver.h"
|
||||||
MemoryCardDriver *MakeMemoryCardDriver()
|
MemoryCardDriver *MakeMemoryCardDriver()
|
||||||
{
|
{
|
||||||
if( !PREFSMAN->m_bMemoryCards )
|
|
||||||
return new MemoryCardDriver_Null;
|
|
||||||
|
|
||||||
MemoryCardDriver *ret = NULL;
|
MemoryCardDriver *ret = NULL;
|
||||||
|
|
||||||
#ifdef ARCH_MEMORY_CARD_DRIVER
|
#ifdef ARCH_MEMORY_CARD_DRIVER
|
||||||
|
|||||||
Reference in New Issue
Block a user