fix android compile, fix windows system info log, implement touch/stylus events on windows

This commit is contained in:
2018-10-08 21:13:44 +02:00
parent 365af43891
commit dba5eef824
9 changed files with 65 additions and 33 deletions

View File

@@ -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;