From 7b7b35d48682c936887b1e12415d2c69ad86a774 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Sun, 14 Mar 2021 00:24:45 +0100 Subject: [PATCH 1/5] Avoid MSVC compiler warning about C++ exceptions being used The exact warning reads: C++ exception handler used, but unwind semantics are not enabled. Signed-off-by: Johannes Schindelin --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f941598..6c3f530 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,7 +37,7 @@ if (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") set(CMAKE_CXX_FLAGS "-Wall -Wparentheses -Winline -Wbad-function-cast -Wdisabled-optimization -Wextra") else() message(STATUS "MSVC compiler in use") - set(CMAKE_CXX_FLAGS "/Wall /W4") + set(CMAKE_CXX_FLAGS "/Wall /W4 /EHsc") endif() add_compile_definitions(NAPI_CPP_EXCEPTIONS) From 6202032c72580003a0c652982b5a3454801f9714 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Sat, 13 Mar 2021 23:48:58 +0100 Subject: [PATCH 2/5] Avoid compiler warnings about uninitialized values Signed-off-by: Johannes Schindelin --- src/main.cc | 2 +- src/win32/keypress.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main.cc b/src/main.cc index 5e2ce32..8d242d2 100644 --- a/src/main.cc +++ b/src/main.cc @@ -496,7 +496,7 @@ Napi::Number _keyToggle(const Napi::CallbackInfo &info) MMKeyFlags flags = MOD_NONE; MMKeyCode key; - bool down; + bool down = false; //Get arguments from JavaScript. std::string keyName = info[0].As(); diff --git a/src/win32/keypress.c b/src/win32/keypress.c index 5a53402..e0b5e2f 100644 --- a/src/win32/keypress.c +++ b/src/win32/keypress.c @@ -167,6 +167,8 @@ void typeString(const char *str) c3 = (*str++) & 0x3F; n = ((c & 0x07) << 18) | (c1 << 12) | (c2 << 6) | c3; } + else + continue; /* ignore invalid UTF-8 */ toggleUniKey(n, true); toggleUniKey(n, false); From 1f7e80ce6e65814a746b8001663d6697d2f8144f Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Sat, 13 Mar 2021 23:49:59 +0100 Subject: [PATCH 3/5] Avoid compiler warnings about possible loss of data MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This quenches the compiler warning of MSVC รก la: conversion from 'int64_t' to 'int', possible loss of data Signed-off-by: Johannes Schindelin --- src/deadbeef_rand.c | 2 +- src/main.cc | 28 ++++++++++++++-------------- src/win32/keypress.c | 6 +++--- src/win32/mouse.c | 2 +- src/win32/screengrab.c | 4 ++-- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/deadbeef_rand.c b/src/deadbeef_rand.c index 1de295f..c894b05 100644 --- a/src/deadbeef_rand.c +++ b/src/deadbeef_rand.c @@ -23,5 +23,5 @@ uint32_t deadbeef_generate_seed(void) { uint32_t t = (uint32_t)time(NULL); uint32_t c = (uint32_t)clock(); - return (t << 24) ^ (c << 11) ^ t ^ (size_t) &c; + return (uint32_t)((t << 24) ^ (c << 11) ^ t ^ (size_t) &c); } diff --git a/src/main.cc b/src/main.cc index 8d242d2..cec6da7 100644 --- a/src/main.cc +++ b/src/main.cc @@ -576,7 +576,7 @@ Napi::Number _typeStringDelayed(const Napi::CallbackInfo &info) std::string stringToType = info[0].As(); size_t cpm = info[1].As().Int32Value(); - typeStringDelayed(stringToType.c_str(), cpm); + typeStringDelayed(stringToType.c_str(), (unsigned int)cpm); return Napi::Number::New(env, 1); } @@ -613,8 +613,8 @@ Napi::Object _getScreenSize(const Napi::CallbackInfo &info) //Create our return object. Napi::Object obj = Napi::Object::New(env); - obj.Set(Napi::String::New(env, "width"), Napi::Number::New(env, displaySize.width)); - obj.Set(Napi::String::New(env, "height"), Napi::Number::New(env, displaySize.height)); + obj.Set(Napi::String::New(env, "width"), Napi::Number::New(env, (double)displaySize.width)); + obj.Set(Napi::String::New(env, "height"), Napi::Number::New(env, (double)displaySize.height)); return obj; } @@ -660,7 +660,7 @@ Napi::Number _highlight(const Napi::CallbackInfo &info) y = info[1].As().Int32Value(); width = info[2].As().Int32Value(); height = info[3].As().Int32Value(); - duration = info[4].As().Int64Value(); + duration = (int)info[4].As().Int64Value(); opacity = info[5].As().FloatValue(); highlight(x, y, width, height, duration, opacity); @@ -673,7 +673,7 @@ Napi::Number _getActiveWindow(const Napi::CallbackInfo &info) { Napi::Env env = info.Env(); WindowHandle windowHandle = getActiveWindow(); - return Napi::Number::New(env, windowHandle); + return Napi::Number::New(env, (double)windowHandle); } Napi::Array _getWindows(const Napi::CallbackInfo &info) { @@ -683,7 +683,7 @@ Napi::Array _getWindows(const Napi::CallbackInfo &info) { auto arr = Napi::Array::New(env, windowHandles.size()); for (size_t idx = 0; idx < windowHandles.size(); ++idx) { - arr[idx] = windowHandles[idx]; + arr[(uint32_t)idx] = windowHandles[idx]; } return arr; @@ -696,10 +696,10 @@ Napi::Object _getWindowRect(const Napi::CallbackInfo &info) { MMRect windowRect = getWindowRect(windowHandle); Napi::Object obj = Napi::Object::New(env); - obj.Set(Napi::String::New(env, "x"), Napi::Number::New(env, windowRect.origin.x)); - obj.Set(Napi::String::New(env, "y"), Napi::Number::New(env, windowRect.origin.y)); - obj.Set(Napi::String::New(env, "width"), Napi::Number::New(env, windowRect.size.width)); - obj.Set(Napi::String::New(env, "height"), Napi::Number::New(env, windowRect.size.height)); + obj.Set(Napi::String::New(env, "x"), Napi::Number::New(env, (double)windowRect.origin.x)); + obj.Set(Napi::String::New(env, "y"), Napi::Number::New(env, (double)windowRect.origin.y)); + obj.Set(Napi::String::New(env, "width"), Napi::Number::New(env, (double)windowRect.size.width)); + obj.Set(Napi::String::New(env, "height"), Napi::Number::New(env, (double)windowRect.size.height)); return obj; } @@ -763,13 +763,13 @@ Napi::Object _captureScreen(const Napi::CallbackInfo &info) throw Napi::Error::New(env, "Error: Failed to capture screen"); } - uint32_t bufferSize = bitmap->bytewidth * bitmap->height; + uint32_t bufferSize = (uint32_t)(bitmap->bytewidth * bitmap->height); Napi::Buffer buffer = Napi::Buffer::New(env, (char *)bitmap->imageBuffer, bufferSize, finalizer); Napi::Object obj = Napi::Object::New(env); - obj.Set(Napi::String::New(env, "width"), Napi::Number::New(env, bitmap->width)); - obj.Set(Napi::String::New(env, "height"), Napi::Number::New(env, bitmap->height)); - obj.Set(Napi::String::New(env, "byteWidth"), Napi::Number::New(env, bitmap->bytewidth)); + obj.Set(Napi::String::New(env, "width"), Napi::Number::New(env, (double)bitmap->width)); + obj.Set(Napi::String::New(env, "height"), Napi::Number::New(env, (double)bitmap->height)); + obj.Set(Napi::String::New(env, "byteWidth"), Napi::Number::New(env, (double)bitmap->bytewidth)); obj.Set(Napi::String::New(env, "bitsPerPixel"), Napi::Number::New(env, bitmap->bitsPerPixel)); obj.Set(Napi::String::New(env, "bytesPerPixel"), Napi::Number::New(env, bitmap->bytesPerPixel)); obj.Set(Napi::String::New(env, "image"), buffer); diff --git a/src/win32/keypress.c b/src/win32/keypress.c index e0b5e2f..04ed0f8 100644 --- a/src/win32/keypress.c +++ b/src/win32/keypress.c @@ -61,7 +61,7 @@ void win32KeyEvent(int key, MMKeyFlags flags) INPUT keyboardInput; keyboardInput.type = INPUT_KEYBOARD; - keyboardInput.ki.wScan = scan; + keyboardInput.ki.wScan = (WORD)scan; keyboardInput.ki.dwFlags = KEYEVENTF_SCANCODE | flags; keyboardInput.ki.time = 0; SendInput(1, &keyboardInput, sizeof(keyboardInput)); @@ -170,8 +170,8 @@ void typeString(const char *str) else continue; /* ignore invalid UTF-8 */ - toggleUniKey(n, true); - toggleUniKey(n, false); + toggleUniKey((char)n, true); + toggleUniKey((char)n, false); } } diff --git a/src/win32/mouse.c b/src/win32/mouse.c index 988edc6..84ebc8c 100644 --- a/src/win32/mouse.c +++ b/src/win32/mouse.c @@ -26,7 +26,7 @@ */ void moveMouse(MMPoint point) { - SetCursorPos (point.x, point.y); + SetCursorPos ((int)point.x, (int)point.y); } void dragMouse(MMPoint point, const MMMouseButton button) diff --git a/src/win32/screengrab.c b/src/win32/screengrab.c index 71d5cdb..92ca250 100644 --- a/src/win32/screengrab.c +++ b/src/win32/screengrab.c @@ -38,8 +38,8 @@ MMBitmapRef copyMMBitmapFromDisplayInRect(MMRect rect) (int)rect.size.width, (int)rect.size.height, screen, - rect.origin.x, - rect.origin.y, + (int)rect.origin.x, + (int)rect.origin.y, SRCCOPY)) { /* Error copying data. */ From c3fc2abe008ed62c2046bb90a95cb3757c82f850 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Sun, 14 Mar 2021 00:20:55 +0100 Subject: [PATCH 4/5] Avoid compiler warnings about unreferenced parameters Signed-off-by: Johannes Schindelin --- src/MMBitmap.c | 1 + src/buffer_finalizer.h | 1 + src/win32/mouse.c | 1 + 3 files changed, 3 insertions(+) diff --git a/src/MMBitmap.c b/src/MMBitmap.c index 37ef021..58128eb 100644 --- a/src/MMBitmap.c +++ b/src/MMBitmap.c @@ -36,6 +36,7 @@ void destroyMMBitmap(MMBitmapRef bitmap) void destroyMMBitmapBuffer(char * bitmapBuffer, void * hint) { + (void)hint; if (bitmapBuffer != NULL) { free(bitmapBuffer); diff --git a/src/buffer_finalizer.h b/src/buffer_finalizer.h index ae2d4aa..396d164 100644 --- a/src/buffer_finalizer.h +++ b/src/buffer_finalizer.h @@ -4,6 +4,7 @@ class BufferFinalizer public: void operator()(Napi::Env env, T *data) { + (void)env; if (data != nullptr) { delete data; diff --git a/src/win32/mouse.c b/src/win32/mouse.c index 84ebc8c..0fb7eed 100644 --- a/src/win32/mouse.c +++ b/src/win32/mouse.c @@ -31,6 +31,7 @@ void moveMouse(MMPoint point) void dragMouse(MMPoint point, const MMMouseButton button) { + (void)button; moveMouse(point); } From c75de11eee55c10676195360ec2f2b6e5381bc17 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Sun, 14 Mar 2021 00:36:04 +0100 Subject: [PATCH 5/5] Avoid compiler warning about signed/unsigned mismatch This works around a compiler warning in MMBitmap.c:71: '<=': signed/unsigned mismatch Signed-off-by: Johannes Schindelin --- src/MMBitmap.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/MMBitmap.h b/src/MMBitmap.h index 80b9e66..2912995 100644 --- a/src/MMBitmap.h +++ b/src/MMBitmap.h @@ -47,8 +47,8 @@ MMBitmapRef copyMMBitmapFromPortion(MMBitmapRef source, MMRect rect); #define MMBitmapPointInBounds(image, p) ((p).x < (image)->width && \ (p).y < (image)->height) #define MMBitmapRectInBounds(image, r) \ - (((r).origin.x + (r).size.width <= (image)->width) && \ - ((r).origin.y + (r).size.height <= (image)->height)) + (((r).origin.x + (r).size.width <= (int64_t)(image)->width) && \ + ((r).origin.y + (r).size.height <= (int64_t)(image)->height)) #define MMBitmapGetBounds(image) MMRectMake(0, 0, image->width, image->height)