extern void mousehack_write(int reg, uae_u16 val);
extern void setmouseactive(int monid, int);
extern bool ismouseactive(void);
+extern void inputdevice_read_msg(bool);
extern void setmousebuttonstateall (int mouse, uae_u32 buttonbits, uae_u32 buttonmask);
extern void setjoybuttonstateall (int joy, uae_u32 buttonbits, uae_u32 buttonmask);
extern void graphics_leave(void);
extern void graphics_reset(bool);
extern bool handle_events (void);
-extern int handle_msgpump (void);
+extern int handle_msgpump (bool);
extern void setup_brkhandler (void);
extern int isfullscreen (void);
extern void toggle_fullscreen(int monid, int);
x = inx;
y = iny;
- getgfxoffset(0, &fdx, &fdy, &fmx, &fmy);
+ getgfxoffset(monid, &fdx, &fdy, &fmx, &fmy);
//write_log("%.2f*%.2f %.2f*%.2f\n", fdx, fdy, fmx, fmy);
static int inputread;
-static void inputdevice_read(void)
+void inputdevice_read_msg(bool vblank)
{
-// if ((inputdevice_logging & (2 | 4)))
-// write_log(_T("INPUTREAD\n"));
int got2 = 0;
for (;;) {
- int got = handle_msgpump();
+ int got = handle_msgpump(vblank);
if (!got)
break;
got2 = 1;
}
+}
+
+static void inputdevice_read(void)
+{
+// if ((inputdevice_logging & (2 | 4)))
+// write_log(_T("INPUTREAD\n"));
+ inputdevice_read_msg(false);
if (inputread <= 0) {
idev[IDTYPE_MOUSE].read();
idev[IDTYPE_JOYSTICK].read();
while (inprec_playevent (&nr, &state, &max, &autofire))
handle_input_event (nr, state, max, (autofire ? HANDLE_IE_FLAG_AUTOFIRE : 0) | HANDLE_IE_FLAG_PLAYBACKEVENT);
if (vpos == 0)
- handle_msgpump ();
+ handle_msgpump(true);
}
if (!input_record && !input_play) {
if (forceread) {
return DefWindowProc (hWnd, message, wParam, lParam);
}
-int handle_msgpump (void)
+int handle_msgpump(bool vblank)
{
- int got = 0;
MSG msg;
+ int got = 0;
- while (PeekMessage (&msg, 0, 0, 0, PM_REMOVE)) {
+ UINT wRemoveMsg = PM_REMOVE | PM_NOYIELD | PM_QS_INPUT;
+ if (vblank) {
+ wRemoveMsg |= PM_QS_PAINT | PM_QS_POSTMESSAGE | PM_QS_SENDMESSAGE;
+ }
+ while (PeekMessage(&msg, 0, 0, 0, wRemoveMsg)) {
got = 1;
- TranslateMessage (&msg);
- DispatchMessage (&msg);
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
}
while (checkIPC (globalipc, &currprefs));
return got;