summaryrefslogtreecommitdiff
path: root/src/screen
diff options
context:
space:
mode:
Diffstat (limited to 'src/screen')
-rw-r--r--src/screen/screen.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/screen/screen.c b/src/screen/screen.c
index 7bd5d25..844076e 100644
--- a/src/screen/screen.c
+++ b/src/screen/screen.c
@@ -1,4 +1,5 @@
#define AL_LOG_SECTION "screen"
+//#define AL_LOG_ENABLE_TRACE
#include <al/log.h>
#include <al/math.h>
#include <nnwt/thread.h>
@@ -703,7 +704,9 @@ void camu_screen_clear(struct camu_screen *scr)
void camu_screen_set_state(struct camu_screen *scr, s32 state)
{
- // @TODO: What to do if a buffer is queued for removal and we pause here.
+ // If state = PAUSED, remove_buffer() relies on screen_wake().
+ // Unlike mixer_pause() there are no special considerations needed for
+ // the buffer queue at the point we set state to PAUSED.
al_atomic_store(s32)(&scr->state, state, AL_ATOMIC_RELEASE);
if (state == CAMU_SCREEN_PAUSED) {
al_atomic_add(u32)(&scr->force_refresh, 1, AL_ATOMIC_RELAXED);
@@ -747,6 +750,7 @@ bool camu_screen_tick(struct camu_screen *scr, bool *force)
force_refresh = al_atomic_load(u32)(&scr->force_refresh, AL_ATOMIC_ACQUIRE);
do_render |= force_refresh > 0;
*force = force_refresh > 0;
+ log_trace("tick (do_render: %s, force_refresh: %u).", BOOLSTR(do_render), force_refresh);
if (force_refresh > 0) {
al_atomic_sub(u32)(&scr->force_refresh, 1, AL_ATOMIC_RELEASE);
}