summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/play.c37
-rw-r--r--src/play.h5
2 files changed, 40 insertions, 2 deletions
diff --git a/src/play.c b/src/play.c
index c15a26f..5c51cbf 100644
--- a/src/play.c
+++ b/src/play.c
@@ -39,6 +39,7 @@ typedef struct play_t {
unsigned ticks_paused:1;
unsigned update_needed:1;
unsigned has_audio:1;
+ unsigned pointer_owned:1;
const play_ops_t **ops;
int n_ops;
int context;
@@ -196,7 +197,7 @@ void play_context_enter(play_t *play, int context)
/* return context pointer of specified context,
* a negative context requests the current context.
*/
-void * play_context(play_t *play, int context)
+void * play_context(const play_t *play, int context)
{
assert(play);
@@ -285,6 +286,40 @@ int play_ticks_elapsed(play_t *play, play_ticks_t timer, unsigned duration)
}
+void play_pointer_own(play_t *play)
+{
+ assert(play);
+
+ if (play->pointer_owned)
+ return;
+
+ SDL_SetRelativeMouseMode(SDL_TRUE);
+
+ play->pointer_owned = 1;
+}
+
+
+void play_pointer_disown(play_t *play)
+{
+ assert(play);
+
+ if (!play->pointer_owned)
+ return;
+
+ SDL_SetRelativeMouseMode(SDL_FALSE);
+
+ play->pointer_owned = 0;
+}
+
+
+int play_pointer_owned(const play_t *play)
+{
+ assert(play);
+
+ return !!play->pointer_owned;
+}
+
+
void play_quit(play_t *play)
{
SDL_Event ev = { .type = SDL_QUIT };
diff --git a/src/play.h b/src/play.h
index 98581c8..1d4ec6b 100644
--- a/src/play.h
+++ b/src/play.h
@@ -63,11 +63,14 @@ void play_music_set(play_t *play, unsigned flags, const char *fmt, ...);
void play_music_pause(play_t *play);
void play_music_resume(play_t *play);
void play_context_enter(play_t *play, int context);
-void * play_context(play_t *play, int context);
+void * play_context(const play_t *play, int context);
unsigned play_ticks(play_t *play, play_ticks_t timer);
unsigned play_ticks_reset(play_t *play, play_ticks_t timer);
void play_ticks_pause(play_t *play);
int play_ticks_elapsed(play_t *play, play_ticks_t timer, unsigned duration);
+void play_pointer_own(play_t *play);
+void play_pointer_disown(play_t *play);
+int play_pointer_owned(const play_t *play);
void play_quit(play_t *play);
#endif
© All Rights Reserved