ANDROID: Add faked input delay.
This adds an artificial delay for mouse up events to make engines
like Gob work, similar to the iPhone fix in b3062b5e
.
This commit is contained in:
parent
a488556dcd
commit
4763b2c51b
3 changed files with 24 additions and 2 deletions
|
@ -134,6 +134,7 @@ OSystem_Android::OSystem_Android(int audio_sample_rate, int audio_buffer_size) :
|
||||||
_enable_zoning(false),
|
_enable_zoning(false),
|
||||||
_mixer(0),
|
_mixer(0),
|
||||||
_shake_offset(0),
|
_shake_offset(0),
|
||||||
|
_queuedEventTime(0),
|
||||||
_event_queue_lock(createMutex()),
|
_event_queue_lock(createMutex()),
|
||||||
_touch_pt_down(),
|
_touch_pt_down(),
|
||||||
_touch_pt_scroll(),
|
_touch_pt_scroll(),
|
||||||
|
|
|
@ -220,6 +220,8 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Common::Queue<Common::Event> _event_queue;
|
Common::Queue<Common::Event> _event_queue;
|
||||||
|
Common::Event _queuedEvent;
|
||||||
|
uint32 _queuedEventTime;
|
||||||
MutexRef _event_queue_lock;
|
MutexRef _event_queue_lock;
|
||||||
|
|
||||||
Common::Point _touch_pt_down, _touch_pt_scroll, _touch_pt_dt;
|
Common::Point _touch_pt_down, _touch_pt_scroll, _touch_pt_dt;
|
||||||
|
|
|
@ -216,6 +216,8 @@ static inline T scalef(T in, float numerator, float denominator) {
|
||||||
return static_cast<float>(in) * numerator / denominator;
|
return static_cast<float>(in) * numerator / denominator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const int kQueuedInputEventDelay = 50;
|
||||||
|
|
||||||
void OSystem_Android::setupKeymapper() {
|
void OSystem_Android::setupKeymapper() {
|
||||||
#ifdef ENABLE_KEYMAPPER
|
#ifdef ENABLE_KEYMAPPER
|
||||||
using namespace Common;
|
using namespace Common;
|
||||||
|
@ -601,13 +603,18 @@ void OSystem_Android::pushEvent(int type, int arg1, int arg2, int arg3,
|
||||||
|
|
||||||
lockMutex(_event_queue_lock);
|
lockMutex(_event_queue_lock);
|
||||||
|
|
||||||
|
if (_queuedEventTime)
|
||||||
|
_event_queue.push(_queuedEvent);
|
||||||
|
|
||||||
if (!_touchpad_mode)
|
if (!_touchpad_mode)
|
||||||
_event_queue.push(e);
|
_event_queue.push(e);
|
||||||
|
|
||||||
e.type = down;
|
e.type = down;
|
||||||
_event_queue.push(e);
|
_event_queue.push(e);
|
||||||
|
|
||||||
e.type = up;
|
e.type = up;
|
||||||
_event_queue.push(e);
|
_queuedEvent = e;
|
||||||
|
_queuedEventTime = getMillis() + kQueuedInputEventDelay;
|
||||||
|
|
||||||
unlockMutex(_event_queue_lock);
|
unlockMutex(_event_queue_lock);
|
||||||
}
|
}
|
||||||
|
@ -702,9 +709,14 @@ void OSystem_Android::pushEvent(int type, int arg1, int arg2, int arg3,
|
||||||
|
|
||||||
lockMutex(_event_queue_lock);
|
lockMutex(_event_queue_lock);
|
||||||
|
|
||||||
|
if (_queuedEventTime)
|
||||||
|
_event_queue.push(_queuedEvent);
|
||||||
|
|
||||||
_event_queue.push(e);
|
_event_queue.push(e);
|
||||||
|
|
||||||
e.type = up;
|
e.type = up;
|
||||||
_event_queue.push(e);
|
_queuedEvent = e;
|
||||||
|
_queuedEventTime = getMillis() + kQueuedInputEventDelay;
|
||||||
|
|
||||||
unlockMutex(_event_queue_lock);
|
unlockMutex(_event_queue_lock);
|
||||||
return;
|
return;
|
||||||
|
@ -800,6 +812,13 @@ bool OSystem_Android::pollEvent(Common::Event &event) {
|
||||||
|
|
||||||
lockMutex(_event_queue_lock);
|
lockMutex(_event_queue_lock);
|
||||||
|
|
||||||
|
if (_queuedEventTime && (getMillis() > _queuedEventTime)) {
|
||||||
|
event = _queuedEvent;
|
||||||
|
_queuedEventTime = 0;
|
||||||
|
unlockMutex(_event_queue_lock);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (_event_queue.empty()) {
|
if (_event_queue.empty()) {
|
||||||
unlockMutex(_event_queue_lock);
|
unlockMutex(_event_queue_lock);
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue