summaryrefslogtreecommitdiff
path: root/src/screen
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2025-10-30 14:40:08 -0400
committerAndrew Opalach <andrew@akon.city> 2025-10-30 14:40:08 -0400
commit90da3b27d939b3b7af1cf7fed10dfaaa7e271622 (patch)
treef0cf96c76d5c83470d2c50dd69d2d3e39a503fab /src/screen
parent77837d7b63240c069b3351a919a7d2af670f46cd (diff)
downloadcamu-90da3b27d939b3b7af1cf7fed10dfaaa7e271622.tar.gz
camu-90da3b27d939b3b7af1cf7fed10dfaaa7e271622.tar.bz2
camu-90da3b27d939b3b7af1cf7fed10dfaaa7e271622.zip
Fixes from testing sink change, document things
Signed-off-by: Andrew Opalach <andrew@akon.city>
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);
}