From 3d55d2722a3129449ab1418e73abd97caa7fd2ae Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Wed, 18 Dec 2024 11:06:44 -0500 Subject: Extend server resource loading, work on client Also, cleanup in preparation for changing code style. Signed-off-by: Andrew Opalach --- src/screen/screen.c | 26 +++++++++++++------------- src/screen/screen.h | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) (limited to 'src/screen') diff --git a/src/screen/screen.c b/src/screen/screen.c index d5f6c78..5b5d175 100644 --- a/src/screen/screen.c +++ b/src/screen/screen.c @@ -86,6 +86,7 @@ static bool mouse_button_callback(void *userdata, u8 state, u8 button) if (scr->last_click_ts && aki_get_timestamp() - scr->last_click_ts <= 300000) { if (scr->flags & CAMU_SCREEN_MODIFIER) { f64 percent = scr->last_mouse_x / scr->width; + percent = CLAMP(percent, 0.0, 100.0); scr->callback(scr->userdata, CAMU_SCREEN_SEEK, &percent); } else { if (scr->last_mouse_x >= scr->width / 2.f) { @@ -112,6 +113,7 @@ static bool mouse_button_callback(void *userdata, u8 state, u8 button) switch (state) { case STELA_BUTTON_RELEASED: { f64 percent = scr->last_mouse_x / scr->width; + percent = CLAMP(percent, 0.0, 100.0); scr->callback(scr->userdata, CAMU_SCREEN_SEEK, &percent); break; } @@ -472,6 +474,17 @@ void camu_screen_run_queue(struct camu_screen *scr) al_atomic_store(u8)(&scr->queued, 0, AL_ATOMIC_RELAXED); aki_mutex_unlock(&scr->mutex); } + +void camu_screen_clear(struct camu_screen *scr) +{ + aki_mutex_lock(&scr->mutex); + struct camu_screen_video *video; + al_array_foreach_ptr(scr->videos, i, video) { + struct camu_video_buffer *buf = video->buf; + al_atomic_store(u8)(&buf->ref, 0, AL_ATOMIC_RELAXED); + } + aki_mutex_unlock(&scr->mutex); +} #endif void camu_screen_set_state(struct camu_screen *scr, s32 state) @@ -516,19 +529,6 @@ void camu_screen_wake(struct camu_screen *scr) #endif } -void camu_screen_clear(struct camu_screen *scr) -{ -#ifdef CAMU_SCREEN_THREADED - aki_mutex_lock(&scr->mutex); - struct camu_screen_video *video; - al_array_foreach_ptr(scr->videos, i, video) { - struct camu_video_buffer *buf = video->buf; - al_atomic_store(u8)(&buf->ref, 0, AL_ATOMIC_RELAXED); - } - aki_mutex_unlock(&scr->mutex); -#endif -} - void camu_screen_close(struct camu_screen *scr) { #ifdef CAMU_SCREEN_THREADED diff --git a/src/screen/screen.h b/src/screen/screen.h index 36d9075..349d41f 100644 --- a/src/screen/screen.h +++ b/src/screen/screen.h @@ -79,10 +79,10 @@ void camu_screen_add_buffer(struct camu_screen *scr, struct camu_video_buffer *b void camu_screen_remove_buffer(struct camu_screen *scr, struct camu_video_buffer *buf); #ifdef CAMU_SCREEN_THREADED void camu_screen_run_queue(struct camu_screen *scr); +void camu_screen_clear(struct camu_screen *scr); #endif void camu_screen_set_state(struct camu_screen *scr, s32 state); bool camu_screen_poll(struct camu_screen *scr, bool block); bool camu_screen_tick(struct camu_screen *scr); void camu_screen_wake(struct camu_screen *scr); -void camu_screen_clear(struct camu_screen *scr); void camu_screen_close(struct camu_screen *scr); -- cgit v1.2.3-101-g0448