add Jtk_CheckEvent()
This commit is contained in:
parent
3a594b5355
commit
49c34907f5
@ -335,47 +335,55 @@ static bool ProcessXEvent(XEvent * x_event, Jtk_Event * event)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Jtk_CheckEvent(Jtk_Event * event)
|
||||||
|
{
|
||||||
|
/* First check for an X event. */
|
||||||
|
while (XPending(g_display) > 0)
|
||||||
|
{
|
||||||
|
XEvent x_event;
|
||||||
|
XNextEvent(g_display, &x_event);
|
||||||
|
if (ProcessXEvent(&x_event, event))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Next check if any timer has expired. */
|
||||||
|
size_t timer_id = Jtk_GetExpiredTimer();
|
||||||
|
if (timer_id != (size_t)-1)
|
||||||
|
{
|
||||||
|
#if 0
|
||||||
|
auto it = g_key_repeat_timers.find(timer_id);
|
||||||
|
if (it != g_key_repeat_timers.end())
|
||||||
|
{
|
||||||
|
event->type = JTK_EVENT_KEY_PRESS;
|
||||||
|
event->key.repeat = true;
|
||||||
|
event->key.key = XKeyToJtkKey(it->second);
|
||||||
|
event->key.x_keycode = it->second;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#endif
|
||||||
|
event->type = JTK_EVENT_TIMER;
|
||||||
|
event->timer.timer_id = timer_id;
|
||||||
|
event->timer.user1 = Jtk_GetTimerUserData(timer_id, 0u);
|
||||||
|
event->timer.user2 = Jtk_GetTimerUserData(timer_id, 1u);
|
||||||
|
#if 0
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
Jtk_ServiceTimer(timer_id);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void Jtk_WaitEvent(Jtk_Event * event)
|
void Jtk_WaitEvent(Jtk_Event * event)
|
||||||
{
|
{
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
/* First check for an X event. */
|
if (Jtk_CheckEvent(event))
|
||||||
while (XPending(g_display) > 0)
|
|
||||||
{
|
|
||||||
XEvent x_event;
|
|
||||||
XNextEvent(g_display, &x_event);
|
|
||||||
if (ProcessXEvent(&x_event, event))
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Next check if any timer has expired. */
|
|
||||||
size_t timer_id = Jtk_GetExpiredTimer();
|
|
||||||
if (timer_id != (size_t)-1)
|
|
||||||
{
|
|
||||||
#if 0
|
|
||||||
auto it = g_key_repeat_timers.find(timer_id);
|
|
||||||
if (it != g_key_repeat_timers.end())
|
|
||||||
{
|
|
||||||
event->type = JTK_EVENT_KEY_PRESS;
|
|
||||||
event->key.repeat = true;
|
|
||||||
event->key.key = XKeyToJtkKey(it->second);
|
|
||||||
event->key.x_keycode = it->second;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
event->type = JTK_EVENT_TIMER;
|
|
||||||
event->timer.timer_id = timer_id;
|
|
||||||
event->timer.user1 = Jtk_GetTimerUserData(timer_id, 0u);
|
|
||||||
event->timer.user2 = Jtk_GetTimerUserData(timer_id, 1u);
|
|
||||||
#if 0
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
Jtk_ServiceTimer(timer_id);
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
/* Finally, wait for something to happen. */
|
/* Wait for something to happen. */
|
||||||
uint64_t time_to_wait = Jtk_TimeToNextTimerExpiration();
|
uint64_t time_to_wait = Jtk_TimeToNextTimerExpiration();
|
||||||
if (time_to_wait > MAX_WAIT_TIME)
|
if (time_to_wait > MAX_WAIT_TIME)
|
||||||
{
|
{
|
||||||
|
@ -52,6 +52,7 @@ typedef struct
|
|||||||
};
|
};
|
||||||
} Jtk_Event;
|
} Jtk_Event;
|
||||||
|
|
||||||
|
bool Jtk_CheckEvent(Jtk_Event * event);
|
||||||
void Jtk_WaitEvent(Jtk_Event * event);
|
void Jtk_WaitEvent(Jtk_Event * event);
|
||||||
#if 0
|
#if 0
|
||||||
void Jtk_BeginKeyRepeat(Jtk_KeyEvent * key_event, uint32_t delay, uint32_t interval);
|
void Jtk_BeginKeyRepeat(Jtk_KeyEvent * key_event, uint32_t delay, uint32_t interval);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user