#include "memory.h"
#include "native2amiga_api.h"
-#define DEBUG_CLIP 0
-
int clipboard_debug;
+int clipboard_log;
static HWND chwnd;
static HDC hdc;
if (clipboard_debug) {
debugwrite(ctx, _T("clipboard_p2a"), clipboard_data, to_amiga_size);
}
-#if DEBUG_CLIP > 0
- write_log(_T("clipboard: to_amiga %08x %d\n"), clipboard_data, to_amiga_size);
-#endif
+ if (clipboard_log) {
+ write_log(_T("clipboard: to_amiga %08x %d\n"), clipboard_data, to_amiga_size);
+ }
trap_put_long(ctx, clipboard_data, to_amiga_size);
uae_Signal(trap_get_long(ctx, clipboard_data + 8), 1 << 13);
to_amiga_phase = 2;
xfree (bmp.bmBits);
return;
}
-#if DEBUG_CLIP > 0
- write_log (_T("BMP2IFF: W=%d H=%d bpp=%d\n"), w, h, bpp);
-#endif
+ if (clipboard_log) {
+ write_log (_T("BMP2IFF: W=%d H=%d bpp=%d\n"), w, h, bpp);
+ }
iffbpp = bpp > 8 ? 24 : bpp;
cnt = 0;
for (y = 0; y < h && cnt < 256; y++) {
i >>= 1;
iffbpp++;
}
-#if DEBUG_CLIP > 0
- write_log (_T("BMP2IFF: Colors=%d BPP=%d\n"), cnt, iffbpp);
-#endif
+ if (clipboard_log) {
+ write_log (_T("BMP2IFF: Colors=%d BPP=%d\n"), cnt, iffbpp);
+ }
}
bodysize = (((w + 15) & ~15) / 8) * h * iffbpp;
uae_u8 *caddr = NULL, *dptr;
body = 1;
-#if DEBUG_CLIP > 0
- write_log (_T("W=%d H=%d planes=%d mask=%d comp=%d CAMG=%08x\n"), w, h, planes, masking, compr, camg);
-#endif
+ if (clipboard_log) {
+ write_log (_T("W=%d H=%d planes=%d mask=%d comp=%d CAMG=%08x\n"), w, h, planes, masking, compr, camg);
+ }
ham = 0; ehb = 0;
if ((camg & 0x0800) && planes > 4)
if (clip_disabled || !hwnd)
return;
if (to_amiga) {
-#if DEBUG_CLIP > 0
- write_log (_T("clipboard: read windows clipboard but ignored because previous clip transfer still active\n"));
-#endif
+ if (clipboard_log) {
+ write_log (_T("clipboard: read windows clipboard but ignored because previous clip transfer still active\n"));
+ }
return;
}
clipboard_change = 0;
-#if DEBUG_CLIP > 0
- write_log (_T("clipboard: read windows clipboard\n"));
-#endif
+ if (clipboard_log) {
+ write_log (_T("clipboard: read windows clipboard\n"));
+ }
if (!filesys_heartbeat())
return;
if (!OpenClipboard (hwnd))
if (hglb != NULL) {
TCHAR *lptstr = (TCHAR*)GlobalLock (hglb);
if (lptstr != NULL) {
-#if DEBUG_CLIP > 0
- write_log (_T("clipboard: CF_UNICODETEXT '%s'\n"), lptstr);
-#endif
+ if (clipboard_log) {
+ write_log (_T("clipboard: CF_UNICODETEXT '%s'\n"), lptstr);
+ }
if (keyboardinject) {
to_keyboard(lptstr);
} else {
} else if (bmp) {
HBITMAP hbmp = (HBITMAP)GetClipboardData (CF_BITMAP);
if (hbmp != NULL) {
-#if DEBUG_CLIP > 0
- write_log (_T("clipboard: CF_BITMAP\n"));
-#endif
+ if (clipboard_log) {
+ write_log (_T("clipboard: CF_BITMAP\n"));
+ }
to_iff_ilbm(ctx, hbmp);
}
}
void clipboard_changed (HWND hwnd)
{
-#if DEBUG_CLIP > 0
- write_log (_T("clipboard: windows clipboard changed message\n"));
-#endif
+ if (clipboard_log) {
+ write_log (_T("clipboard: windows clipboard changed message\n"));
+ }
if (!initialized)
return;
if (!clipboard_data)
ret = TRUE;
CloseClipboard ();
clipopen--;
-#if DEBUG_CLIP > 0
- write_log (_T("clipboard: BMP written to windows clipboard\n"));
-#endif
+ if (clipboard_log) {
+ write_log (_T("clipboard: BMP written to windows clipboard\n"));
+ }
return ret;
}
}
CloseClipboard ();
clipopen--;
-#if DEBUG_CLIP > 0
- write_log (_T("clipboard: text written to windows clipboard\n"));
-#endif
+ if (clipboard_log) {
+ write_log (_T("clipboard: text written to windows clipboard\n"));
+ }
return ret;
}
write_log (_T("clipboard: got_data() before initialized!?\n"));
return;
}
-#if DEBUG_CLIP > 0
- write_log (_T("clipboard: <-amiga, %08x, %08x %d %d\n"), clipboard_data, data, size, actual);
-#endif
+ if (clipboard_log) {
+ write_log (_T("clipboard: <-amiga, %08x, %08x %d %d\n"), clipboard_data, data, size, actual);
+ }
from_iff(ctx, data, actual);
}
size = trap_get_long(ctx, clipboard_data);
if (!initialized) {
write_log (_T("clipboard: want_data() before initialized!? (%08x %08x %d)\n"), clipboard_data, addr, size);
+ xfree(to_amiga);
to_amiga = NULL;
+ to_amiga_size = 0;
return 0;
}
if (size != to_amiga_size) {
write_log (_T("clipboard: size %d <> %d mismatch!?\n"), size, to_amiga_size);
+ xfree(to_amiga);
to_amiga = NULL;
+ to_amiga_size = 0;
return 0;
}
if (addr && size) {
trap_put_bytes(ctx, to_amiga, addr, size);
}
- xfree (to_amiga);
-#if DEBUG_CLIP > 0
- write_log (_T("clipboard: ->amiga, %08x, %08x %d (%d) bytes\n"), clipboard_data, addr, size, to_amiga_size);
-#endif
+ if (clipboard_log) {
+ write_log (_T("clipboard: ->amiga, %08x, %08x %d (%d) bytes\n"), clipboard_data, addr, size, to_amiga_size);
+ }
+ xfree(to_amiga);
to_amiga = NULL;
to_amiga_size = 0;
return 1;
uaecptr task = trap_get_long(ctx, clipboard_data + 8);
if (task && native2amiga_isfree()) {
uae_Signal(task, 1 << 13);
-#if DEBUG_CLIP > 0
- write_log(_T("clipboard: signal %08x\n"), clipboard_data);
-#endif
+ if (clipboard_log) {
+ write_log(_T("clipboard: signal %08x\n"), clipboard_data);
+ }
}
return 0;
}
if (vdelay2 > 0) {
vdelay2--;
- //write_log(_T("vdelay2 = %d\n"), vdelay2);
}
if (to_amiga_phase == 1 && vdelay2 <= 0) {
void clipboard_reset(void)
{
- write_log (_T("clipboard: reset (%08x)\n"), clipboard_data);
+ if (clipboard_log) {
+ write_log(_T("clipboard: reset (%08x)\n"), clipboard_data);
+ }
clipboard_unsafeperiod();
clipboard_free_delayed ();
clipboard_data = 0;
static int start_data = 0;
static void *tablet;
HCURSOR normalcursor;
-static HWND hwndNextViewer;
static bool clipboard_initialized;
HANDLE AVTask;
static int all_events_disabled;
DragAcceptFiles(hWnd, TRUE);
normalcursor = LoadCursor(NULL, IDC_ARROW);
if (!clipboard_initialized) {
- clipboard_initialized = true;
- hwndNextViewer = SetClipboardViewer(hWnd);
- clipboard_init(hWnd);
+ if (AddClipboardFormatListener(hWnd)) {
+ clipboard_initialized = true;
+ clipboard_init(hWnd);
+ }
}
return 0;
case WM_DESTROY:
- clipboard_initialized = false;
+ if (clipboard_initialized) {
+ RemoveClipboardFormatListener(hWnd);
+ clipboard_initialized = false;
+ }
if (device_change_timer)
KillTimer(hWnd, 4);
device_change_timer = 0;
}
break;
- case WM_CHANGECBCHAIN:
- if (clipboard_initialized) {
- if ((HWND)wParam == hwndNextViewer)
- hwndNextViewer = (HWND)lParam;
- else if (hwndNextViewer != NULL)
- SendMessage(hwndNextViewer, message, wParam, lParam);
- return 0;
- }
- break;
- case WM_DRAWCLIPBOARD:
+ case WM_CLIPBOARDUPDATE:
if (clipboard_initialized) {
clipboard_changed(hWnd);
- if (hwndNextViewer)
- SendMessage(hwndNextViewer, message, wParam, lParam);
return 0;
}
break;
setpathmode (path_type);
}
-extern int screenshotmode, postscript_print_debugging, sound_debug, log_uaeserial, clipboard_debug;
+extern int screenshotmode, postscript_print_debugging, sound_debug, log_uaeserial;
+static int clipboard_debug, clipboard_log;
extern int force_direct_catweasel, sound_mode_skip, maxmem;
extern int pngprint, log_sercon, midi_inbuflen;
extern int debug_rtg_blitter;
clipboard_debug = 1;
return 1;
}
+ if (!_tcscmp(arg, _T("clipboardlog"))) {
+ clipboard_log = 1;
+ return 1;
+ }
if (!_tcscmp(arg, _T("rplog"))) {
log_rp = 3;
return 1;