fix android compile, fix windows system info log, implement touch/stylus events on windows
This commit is contained in:
68
src/main.cpp
68
src/main.cpp
@@ -264,7 +264,8 @@ static void SetupExceptionHandler()
|
||||
BT_SetFlags(BTF_DETAILEDMODE | BTF_ATTACHREPORT | BTF_SCREENCAPTURE);
|
||||
|
||||
// = BugTrapServer ===========================================
|
||||
BT_SetSupportServer(_T("omigamedev.ddns.net"), 8088);
|
||||
//BT_SetSupportServer(_T("omigamedev.ddns.net"), 8088);
|
||||
BT_SetSupportEMail(_T("info@panopainter.com"));
|
||||
// - or -
|
||||
//BT_SetSupportServer(_T("127.0.0.1"), 9999);
|
||||
|
||||
@@ -454,6 +455,12 @@ int main(int argc, char** argv)
|
||||
}
|
||||
}
|
||||
|
||||
// link: https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-registertouchwindow
|
||||
if (RegisterTouchWindow(hWnd, 0) == 0)
|
||||
{
|
||||
LOG("RegisterTouchWindow error: %s", GetLastErrorAsString().c_str());
|
||||
}
|
||||
|
||||
auto monitor = MonitorFromWindow(hWnd, MONITOR_DEFAULTTONEAREST);
|
||||
auto x = unsigned{};
|
||||
auto y = unsigned{};
|
||||
@@ -520,7 +527,6 @@ int main(int argc, char** argv)
|
||||
async_lock();
|
||||
while (!working_list.empty())
|
||||
{
|
||||
|
||||
working_list.front()();
|
||||
working_list.pop_front();
|
||||
}
|
||||
@@ -589,6 +595,12 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
|
||||
static bool leftDown = false;
|
||||
static DWORD lastTime;
|
||||
static POINT lastPoint;
|
||||
|
||||
auto extra = GetMessageExtraInfo();
|
||||
auto pointer_source = WacomTablet::I.m_stylus ? kEventSource::Stylus : kEventSource::Mouse;
|
||||
if ((extra & 0xFFFFFF00) == 0xFF515700)
|
||||
pointer_source = kEventSource::Touch;
|
||||
|
||||
switch (msg)
|
||||
{
|
||||
case WM_USER_CLOSE:
|
||||
@@ -624,13 +636,29 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
|
||||
}
|
||||
case WM_ACTIVATE:
|
||||
{
|
||||
int active = GET_WM_ACTIVATE_STATE(wp, lp);
|
||||
WacomTablet::I.set_focus(active);
|
||||
std::lock_guard<std::mutex> lock(task_mutex);
|
||||
tasklist.emplace_back([=] {
|
||||
int active = GET_WM_ACTIVATE_STATE(wp, lp);
|
||||
WacomTablet::I.set_focus(active);
|
||||
});
|
||||
break;
|
||||
}
|
||||
// case WM_TOUCH:
|
||||
// {
|
||||
// std::lock_guard<std::mutex> lock(task_mutex);
|
||||
// tasklist.emplace_back([=] {
|
||||
// //LOG("touch");
|
||||
// });
|
||||
// break;
|
||||
// }
|
||||
case WT_PACKET:
|
||||
WacomTablet::I.handle_message(hWnd, msg, wp, lp);
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(task_mutex);
|
||||
tasklist.emplace_back([=] {
|
||||
WacomTablet::I.handle_message(hWnd, msg, wp, lp);
|
||||
});
|
||||
break;
|
||||
}
|
||||
case WM_SYSKEYDOWN:
|
||||
case WM_KEYDOWN:
|
||||
{
|
||||
@@ -660,45 +688,45 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
|
||||
case WM_MOUSEMOVE:
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(task_mutex);
|
||||
tasklist.emplace_back([lp, p = WacomTablet::I.get_pressure()]{
|
||||
App::I.mouse_move((float)GET_X_LPARAM(lp), (float)GET_Y_LPARAM(lp), p, kEventSource::Mouse);
|
||||
tasklist.emplace_back([lp, pointer_source, p = WacomTablet::I.get_pressure()]{
|
||||
App::I.mouse_move((float)GET_X_LPARAM(lp), (float)GET_Y_LPARAM(lp), p, pointer_source);
|
||||
});
|
||||
}
|
||||
break;
|
||||
case WM_LBUTTONDOWN:
|
||||
SetCapture(hWnd);
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(task_mutex);
|
||||
tasklist.emplace_back([lp, p = WacomTablet::I.get_pressure()]{
|
||||
App::I.mouse_down(0, (float)GET_X_LPARAM(lp), (float)GET_Y_LPARAM(lp), p, kEventSource::Mouse);
|
||||
tasklist.emplace_back([lp, pointer_source, hWnd, p = WacomTablet::I.get_pressure()]{
|
||||
SetCapture(hWnd);
|
||||
App::I.mouse_down(0, (float)GET_X_LPARAM(lp), (float)GET_Y_LPARAM(lp), p, pointer_source);
|
||||
});
|
||||
}
|
||||
break;
|
||||
case WM_LBUTTONUP:
|
||||
WacomTablet::I.reset_pressure();
|
||||
ReleaseCapture();
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(task_mutex);
|
||||
tasklist.emplace_back([lp]{
|
||||
App::I.mouse_up(0, (float)GET_X_LPARAM(lp), (float)GET_Y_LPARAM(lp), kEventSource::Mouse);
|
||||
tasklist.emplace_back([lp, pointer_source]{
|
||||
WacomTablet::I.reset_pressure();
|
||||
ReleaseCapture();
|
||||
App::I.mouse_up(0, (float)GET_X_LPARAM(lp), (float)GET_Y_LPARAM(lp), pointer_source);
|
||||
});
|
||||
}
|
||||
break;
|
||||
case WM_RBUTTONDOWN:
|
||||
SetCapture(hWnd);
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(task_mutex);
|
||||
tasklist.emplace_back([lp]{
|
||||
App::I.mouse_down(1, (float)GET_X_LPARAM(lp), (float)GET_Y_LPARAM(lp), 1.f, kEventSource::Mouse);
|
||||
tasklist.emplace_back([lp, pointer_source, hWnd]{
|
||||
SetCapture(hWnd);
|
||||
App::I.mouse_down(1, (float)GET_X_LPARAM(lp), (float)GET_Y_LPARAM(lp), 1.f, pointer_source);
|
||||
});
|
||||
}
|
||||
break;
|
||||
case WM_RBUTTONUP:
|
||||
ReleaseCapture();
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(task_mutex);
|
||||
tasklist.emplace_back([lp]{
|
||||
App::I.mouse_up(1, (float)GET_X_LPARAM(lp), (float)GET_Y_LPARAM(lp), kEventSource::Mouse);
|
||||
tasklist.emplace_back([lp, pointer_source]{
|
||||
ReleaseCapture();
|
||||
App::I.mouse_up(1, (float)GET_X_LPARAM(lp), (float)GET_Y_LPARAM(lp), pointer_source);
|
||||
});
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user