Add is_valid_context(), fixes/refactorings

This commit is contained in:
Stephen Seo 2019-11-27 19:47:51 +09:00
parent 8d1dbead20
commit 04fa5ca017
2 changed files with 18 additions and 9 deletions

View file

@ -1809,10 +1809,10 @@ UDPC_HContext UDPC_init_threaded_update_ms(
return (UDPC_HContext) ctx; return (UDPC_HContext) ctx;
} }
void UDPC_enable_threaded_update(UDPC_HContext ctx) { int UDPC_enable_threaded_update(UDPC_HContext ctx) {
UDPC::Context *c = UDPC::verifyContext(ctx); UDPC::Context *c = UDPC::verifyContext(ctx);
if(!c || c->flags.test(0) || c->thread.joinable()) { if(!c || c->flags.test(0) || c->thread.joinable()) {
return; return 0;
} }
c->flags.set(0); c->flags.set(0);
@ -1821,12 +1821,13 @@ void UDPC_enable_threaded_update(UDPC_HContext ctx) {
c->thread = std::thread(UDPC::threadedUpdate, c); c->thread = std::thread(UDPC::threadedUpdate, c);
UDPC_CHECK_LOG(c, UDPC_LoggingType::UDPC_INFO, "Started threaded update"); UDPC_CHECK_LOG(c, UDPC_LoggingType::UDPC_INFO, "Started threaded update");
return 1;
} }
void UDPC_enable_threaded_update_ms(UDPC_HContext ctx, int updateMS) { int UDPC_enable_threaded_update_ms(UDPC_HContext ctx, int updateMS) {
UDPC::Context *c = UDPC::verifyContext(ctx); UDPC::Context *c = UDPC::verifyContext(ctx);
if(!c || c->flags.test(0) || c->thread.joinable()) { if(!c || c->flags.test(0) || c->thread.joinable()) {
return; return 0;
} }
c->flags.set(0); c->flags.set(0);
@ -1841,12 +1842,13 @@ void UDPC_enable_threaded_update_ms(UDPC_HContext ctx, int updateMS) {
c->thread = std::thread(UDPC::threadedUpdate, c); c->thread = std::thread(UDPC::threadedUpdate, c);
UDPC_CHECK_LOG(c, UDPC_LoggingType::UDPC_INFO, "Started threaded update"); UDPC_CHECK_LOG(c, UDPC_LoggingType::UDPC_INFO, "Started threaded update");
return 1;
} }
void UDPC_disable_threaded_update(UDPC_HContext ctx) { int UDPC_disable_threaded_update(UDPC_HContext ctx) {
UDPC::Context *c = UDPC::verifyContext(ctx); UDPC::Context *c = UDPC::verifyContext(ctx);
if(!c || !c->flags.test(0) || !c->thread.joinable()) { if(!c || !c->flags.test(0) || !c->thread.joinable()) {
return; return 0;
} }
c->threadRunning.store(false); c->threadRunning.store(false);
@ -1854,6 +1856,11 @@ void UDPC_disable_threaded_update(UDPC_HContext ctx) {
c->flags.reset(0); c->flags.reset(0);
UDPC_CHECK_LOG(c, UDPC_LoggingType::UDPC_INFO, "Stopped threaded update"); UDPC_CHECK_LOG(c, UDPC_LoggingType::UDPC_INFO, "Stopped threaded update");
return 1;
}
int UDPC_is_valid_context(UDPC_HContext ctx) {
return UDPC::verifyContext(ctx) != nullptr ? 1 : 0;
} }
void UDPC_destroy(UDPC_HContext ctx) { void UDPC_destroy(UDPC_HContext ctx) {

View file

@ -135,9 +135,11 @@ UDPC_HContext UDPC_init_threaded_update_ms(
int updateMS, int updateMS,
int isUsingLibsodium); int isUsingLibsodium);
void UDPC_enable_threaded_update(UDPC_HContext ctx); int UDPC_enable_threaded_update(UDPC_HContext ctx);
void UDPC_enable_threaded_update_ms(UDPC_HContext ctx, int updateMS); int UDPC_enable_threaded_update_ms(UDPC_HContext ctx, int updateMS);
void UDPC_disable_threaded_update(UDPC_HContext ctx); int UDPC_disable_threaded_update(UDPC_HContext ctx);
int UDPC_is_valid_context(UDPC_HContext ctx);
void UDPC_destroy(UDPC_HContext ctx); void UDPC_destroy(UDPC_HContext ctx);