]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Do not inject clipboard data to Amiga side if AOS is not running (no filesystem heart...
authorToni Wilen <twilen@winuae.net>
Sat, 30 Jun 2018 10:04:32 +0000 (13:04 +0300)
committerToni Wilen <twilen@winuae.net>
Sat, 30 Jun 2018 10:04:32 +0000 (13:04 +0300)
filesys.cpp
include/autoconf.h
od-win32/clipboard_win32.cpp

index d7f0ab8b9093abba1f3e77ad7beb3c8e6146f0c4..66292e2a17e344f8e006dc3e6f7b34f75e329a20 100644 (file)
@@ -1863,6 +1863,11 @@ static uae_u32 heartbeat;
 static int heartbeat_count;
 static int heartbeat_task;
 
+bool filesys_heartbeat(void)
+{
+       return heartbeat_count > 0;
+}
+
 // This uses filesystem process to reduce resource usage
 void setsystime (void)
 {
index 4d21a48b17810c033d675f4a3d524df73e748a09..140128dcde576ee0b5a170fd6ba952dcc973637b 100644 (file)
@@ -132,6 +132,7 @@ extern void filesys_start_threads (void);
 extern void filesys_flush_cache (void);
 extern void filesys_free_handles (void);
 extern void filesys_vsync (void);
+extern bool filesys_heartbeat(void);
 
 extern void filesys_install (void);
 extern void filesys_install_code (void);
index a1a2e2af592082f9ed0db05585dc9d405cac890d..c6051b9fc9cfcb9ca1fe85e0a266991a0852a968 100644 (file)
@@ -7,12 +7,14 @@
 
 #include <windows.h>
 
+#include "options.h"
 #include "traps.h"
 #include "clipboard_win32.h"
 #include "clipboard.h"
 #include "keybuf.h"
+#include "memory.h"
+#include "autoconf.h"
 
-#include "options.h"
 #include "threaddep/thread.h"
 #include "memory.h"
 #include "native2amiga_api.h"
@@ -65,6 +67,8 @@ static void debugwrite (TrapContext *ctx, const TCHAR *name, uaecptr p, int size
 
 static uae_u32 to_amiga_start_cb(TrapContext *ctx, void *ud)
 {
+       if (!filesys_heartbeat())
+               return 0;
        if (trap_get_long(ctx, clipboard_data) != 0)
                return 0;
        if (clipboard_debug) {
@@ -751,6 +755,8 @@ static void clipboard_read(TrapContext *ctx, HWND hwnd, bool keyboardinject)
 #if DEBUG_CLIP > 0
        write_log (_T("clipboard: read windows clipboard\n"));
 #endif
+       if (!filesys_heartbeat())
+               return;
        if (!OpenClipboard (hwnd))
                return;
        f = 0;
@@ -984,6 +990,8 @@ void clipboard_vsync(void)
 {
        if (!signaling || !clipboard_data)
                return;
+       if (!filesys_heartbeat())
+               return;
        vdelay--;
        if (vdelay > 0)
                return;