mirror of
https://github.com/VincentWei/MiniGUI.git
synced 2025-12-15 08:55:35 +08:00
tune the implementation of auto-repeat message
This commit is contained in:
@@ -1429,6 +1429,8 @@ static LRESULT WindowMessageHandler(UINT message, PMAINWIN pWin, LPARAM lParam)
|
|||||||
/* Since 5.0.0 */
|
/* Since 5.0.0 */
|
||||||
case MSG_SETAUTOREPEAT:
|
case MSG_SETAUTOREPEAT:
|
||||||
sg_msgAutoRepeat = *(const MSG*)lParam;
|
sg_msgAutoRepeat = *(const MSG*)lParam;
|
||||||
|
/* start auto-repeat after 300ms */
|
||||||
|
sg_msgAutoRepeat.time = __mg_tick_counter + (__mg_timeout_usec/10000);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Since 5.0.0 */
|
/* Since 5.0.0 */
|
||||||
@@ -1873,9 +1875,12 @@ static void dskOnTimeout (void)
|
|||||||
static DWORD uCounter = 0;
|
static DWORD uCounter = 0;
|
||||||
static DWORD blink_counter = 0;
|
static DWORD blink_counter = 0;
|
||||||
|
|
||||||
if (sg_msgAutoRepeat.hwnd != 0) {
|
if (sg_msgAutoRepeat.hwnd != 0 &&
|
||||||
|
__mg_tick_counter >= sg_msgAutoRepeat.time) {
|
||||||
PostMessage (sg_msgAutoRepeat.hwnd, sg_msgAutoRepeat.message,
|
PostMessage (sg_msgAutoRepeat.hwnd, sg_msgAutoRepeat.message,
|
||||||
sg_msgAutoRepeat.wParam, sg_msgAutoRepeat.lParam);
|
sg_msgAutoRepeat.wParam, sg_msgAutoRepeat.lParam);
|
||||||
|
/* next auto-repeat msg after 50ms */
|
||||||
|
sg_msgAutoRepeat.time = __mg_tick_counter + (__mg_repeat_usec/10000);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (__mg_tick_counter < (blink_counter + 10))
|
if (__mg_tick_counter < (blink_counter + 10))
|
||||||
|
|||||||
@@ -78,6 +78,7 @@
|
|||||||
#include "server.h"
|
#include "server.h"
|
||||||
#include "drawsemop.h"
|
#include "drawsemop.h"
|
||||||
#include "devfont.h"
|
#include "devfont.h"
|
||||||
|
#include "event.h"
|
||||||
|
|
||||||
/******************************* global data *********************************/
|
/******************************* global data *********************************/
|
||||||
PMSGQUEUE __mg_dsk_msg_queue;
|
PMSGQUEUE __mg_dsk_msg_queue;
|
||||||
@@ -2748,6 +2749,8 @@ static LRESULT dskWindowMessageHandler (UINT message,
|
|||||||
/* Since 5.0.0 */
|
/* Since 5.0.0 */
|
||||||
case MSG_SETAUTOREPEAT:
|
case MSG_SETAUTOREPEAT:
|
||||||
sg_msgAutoRepeat = *(const MSG*)lParam;
|
sg_msgAutoRepeat = *(const MSG*)lParam;
|
||||||
|
/* start auto-repeat after 300ms */
|
||||||
|
sg_msgAutoRepeat.time = __mg_tick_counter + (__mg_timeout_usec/10000);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4204,9 +4207,12 @@ static void dskOnTimeout (void)
|
|||||||
static UINT uCounter = 0;
|
static UINT uCounter = 0;
|
||||||
static UINT blink_counter = 0;
|
static UINT blink_counter = 0;
|
||||||
|
|
||||||
if (sg_msgAutoRepeat.hwnd != 0) {
|
if (sg_msgAutoRepeat.hwnd != 0 &&
|
||||||
|
__mg_tick_counter >= sg_msgAutoRepeat.time) {
|
||||||
PostMessage (sg_msgAutoRepeat.hwnd, sg_msgAutoRepeat.message,
|
PostMessage (sg_msgAutoRepeat.hwnd, sg_msgAutoRepeat.message,
|
||||||
sg_msgAutoRepeat.wParam, sg_msgAutoRepeat.lParam);
|
sg_msgAutoRepeat.wParam, sg_msgAutoRepeat.lParam);
|
||||||
|
/* next auto-repeat msg after 50ms */
|
||||||
|
sg_msgAutoRepeat.time = __mg_tick_counter + (__mg_repeat_usec/10000);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (__mg_tick_counter < (blink_counter + 10))
|
if (__mg_tick_counter < (blink_counter + 10))
|
||||||
|
|||||||
@@ -74,6 +74,7 @@
|
|||||||
#include "dc.h"
|
#include "dc.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "devfont.h"
|
#include "devfont.h"
|
||||||
|
#include "event.h"
|
||||||
|
|
||||||
#ifndef WIN32
|
#ifndef WIN32
|
||||||
#include <sys/termios.h>
|
#include <sys/termios.h>
|
||||||
|
|||||||
@@ -72,6 +72,7 @@
|
|||||||
#include "dc.h"
|
#include "dc.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "devfont.h"
|
#include "devfont.h"
|
||||||
|
#include "event.h"
|
||||||
|
|
||||||
/******************************* global data *********************************/
|
/******************************* global data *********************************/
|
||||||
/* pointer to desktop message queue */
|
/* pointer to desktop message queue */
|
||||||
|
|||||||
Reference in New Issue
Block a user