aboutsummaryrefslogtreecommitdiffstats
path: root/src/android.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/android.c')
-rw-r--r--src/android.c42
1 files changed, 40 insertions, 2 deletions
diff --git a/src/android.c b/src/android.c
index 5e5e28c60ca..ed162a903ba 100644
--- a/src/android.c
+++ b/src/android.c
@@ -236,7 +236,7 @@ static sem_t android_pselect_sem, android_pselect_start_sem;
236static void * 236static void *
237android_run_select_thread (void *data) 237android_run_select_thread (void *data)
238{ 238{
239 sigset_t signals; 239 sigset_t signals, sigset;
240 int rc; 240 int rc;
241 241
242 sigfillset (&signals); 242 sigfillset (&signals);
@@ -259,7 +259,11 @@ android_run_select_thread (void *data)
259 259
260 /* Make sure SIGUSR1 can always wake pselect up. */ 260 /* Make sure SIGUSR1 can always wake pselect up. */
261 if (android_pselect_sigset) 261 if (android_pselect_sigset)
262 sigdelset (android_pselect_sigset, SIGUSR1); 262 {
263 sigset = *android_pselect_sigset;
264 sigdelset (&sigset, SIGUSR1);
265 android_pselect_sigset = &sigset;
266 }
263 else 267 else
264 android_pselect_sigset = &signals; 268 android_pselect_sigset = &signals;
265 269
@@ -356,6 +360,23 @@ android_pending (void)
356 return i; 360 return i;
357} 361}
358 362
363/* Wait for events to become available synchronously. Return once an
364 event arrives. */
365
366void
367android_wait_event (void)
368{
369 pthread_mutex_lock (&event_queue.mutex);
370
371 /* Wait for events to appear if there are none available to
372 read. */
373 if (!event_queue.num_events)
374 pthread_cond_wait (&event_queue.read_var,
375 &event_queue.mutex);
376
377 pthread_mutex_unlock (&event_queue.mutex);
378}
379
359void 380void
360android_next_event (union android_event *event_return) 381android_next_event (union android_event *event_return)
361{ 382{
@@ -1472,6 +1493,8 @@ NATIVE_NAME (sendIconified) (JNIEnv *env, jobject object,
1472 1493
1473 event.iconified.type = ANDROID_ICONIFIED; 1494 event.iconified.type = ANDROID_ICONIFIED;
1474 event.iconified.window = window; 1495 event.iconified.window = window;
1496
1497 android_write_event (&event);
1475} 1498}
1476 1499
1477extern JNIEXPORT void JNICALL 1500extern JNIEXPORT void JNICALL
@@ -1482,6 +1505,21 @@ NATIVE_NAME (sendDeiconified) (JNIEnv *env, jobject object,
1482 1505
1483 event.iconified.type = ANDROID_DEICONIFIED; 1506 event.iconified.type = ANDROID_DEICONIFIED;
1484 event.iconified.window = window; 1507 event.iconified.window = window;
1508
1509 android_write_event (&event);
1510}
1511
1512extern JNIEXPORT void JNICALL
1513NATIVE_NAME (sendContextMenu) (JNIEnv *env, jobject object,
1514 jshort window, jint menu_event_id)
1515{
1516 union android_event event;
1517
1518 event.menu.type = ANDROID_CONTEXT_MENU;
1519 event.menu.window = window;
1520 event.menu.menu_event_id = menu_event_id;
1521
1522 android_write_event (&event);
1485} 1523}
1486 1524
1487#pragma clang diagnostic pop 1525#pragma clang diagnostic pop