diff --git a/src/dusk/engine/engine.c b/src/dusk/engine/engine.c index cfe887e2..a69dd72e 100644 --- a/src/dusk/engine/engine.c +++ b/src/dusk/engine/engine.c @@ -138,9 +138,14 @@ errorret_t engineInit(const int32_t argc, const char_t **argv) { } errorret_t engineUpdate(void) { + errorChain(networkManagerUpdate()); + if(networkManagerIsConnectionModalOpen()) { + errorChain(displayUpdate()); + errorOk(); + } + timeUpdate(); inputUpdate(); - errorChain(networkManagerUpdate()); uiUpdate(); errorChain(sceneUpdate()); diff --git a/src/dusk/network/networkmanager.c b/src/dusk/network/networkmanager.c index 5405027d..9e7fce76 100644 --- a/src/dusk/network/networkmanager.c +++ b/src/dusk/network/networkmanager.c @@ -34,6 +34,10 @@ void networkManagerRequestConnection( networkPlatformRequestConnection(onConnected, onFailed, user); } +bool_t networkManagerIsConnectionModalOpen() { + return networkPlatformIsConnectionModalOpen(); +} + errorret_t networkManagerDispose() { errorChain(networkPlatformDispose()); errorOk(); diff --git a/src/dusk/network/networkmanager.h b/src/dusk/network/networkmanager.h index 5a2ff03d..33722cee 100644 --- a/src/dusk/network/networkmanager.h +++ b/src/dusk/network/networkmanager.h @@ -68,6 +68,16 @@ void networkManagerRequestConnection( void *user ); +/** + * This is highly platform specific unfortunately, but basically for PSP and + * maybe some other systems in future, I need a way to tell the engine that the + * network manager is blocking rendering while it lets the user connect. + * + * @return If true, then the network manager is asking the engine to not do any + * thing, including time stepping, until this complete. + */ +bool_t networkManagerIsConnectionModalOpen(); + /** * Disposes of the network manager. This will NOT disconnect from the network. * diff --git a/src/duskpsp/network/networkplatform.h b/src/duskpsp/network/networkplatform.h index ddd0a061..ef02df4d 100644 --- a/src/duskpsp/network/networkplatform.h +++ b/src/duskpsp/network/networkplatform.h @@ -8,9 +8,10 @@ #pragma once #include "networkpsp.h" -#define networkPlatformInit networkPspInit +#define networkPlatformInit networkPspInit #define networkPlatformUpdate networkPspUpdate #define networkPlatformDispose networkPspDispose #define networkPlatformIsConnected networkPspIsConnected #define networkPlatformRequestConnection networkPspRequestConnection #define networkPlatformHTTPRequest networkPspHTTPRequest +#define networkPlatformIsConnectionModalOpen networkPspIsConnectionModalOpen \ No newline at end of file diff --git a/src/duskpsp/network/networkpsp.c b/src/duskpsp/network/networkpsp.c index 54f22719..3af4659e 100644 --- a/src/duskpsp/network/networkpsp.c +++ b/src/duskpsp/network/networkpsp.c @@ -388,3 +388,7 @@ void networkPspHTTPRequest( item->thread.data = item; threadStartRequest(&item->thread); } + +bool_t networkPspIsConnectionModalOpen() { + return sceUtilityNetconfGetStatus() == PSP_UTILITY_DIALOG_VISIBLE; +} \ No newline at end of file diff --git a/src/duskpsp/network/networkpsp.h b/src/duskpsp/network/networkpsp.h index 439ce58d..6d1b9911 100644 --- a/src/duskpsp/network/networkpsp.h +++ b/src/duskpsp/network/networkpsp.h @@ -61,14 +61,19 @@ typedef struct { } networkpsp_t; errorret_t networkPspInit(); + errorret_t networkPspUpdate(); + errorret_t networkPspDispose(); + bool_t networkPspIsConnected(); + void networkPspRequestConnection( void (*onConnected)(void *user), void (*onFailed)(errorret_t error, void *user), void *user ); + void networkPspHTTPRequest( const char_t *url, const networkhttprequestmethod_t method, @@ -79,3 +84,5 @@ void networkPspHTTPRequest( networkhttpcallback_t callback, networkhttperrorcallback_t errorCallback ); + +bool_t networkPspIsConnectionModalOpen(); \ No newline at end of file