From b8fe0b588d896eb24311c61c60c1c2a864997b25 Mon Sep 17 00:00:00 2001 From: Freeman Lou Date: Sun, 5 Jan 2014 00:46:13 +0000 Subject: [PATCH] virtualkeyboard: fixed restart crash --- .../devices/virtualkeyboard/KeyboardLayoutView.cpp | 3 ++- .../devices/virtualkeyboard/VirtualKeyboardInputDevice.cpp | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/add-ons/input_server/devices/virtualkeyboard/KeyboardLayoutView.cpp b/src/add-ons/input_server/devices/virtualkeyboard/KeyboardLayoutView.cpp index 7e5eb7ec50..30ade08d9f 100644 --- a/src/add-ons/input_server/devices/virtualkeyboard/KeyboardLayoutView.cpp +++ b/src/add-ons/input_server/devices/virtualkeyboard/KeyboardLayoutView.cpp @@ -1143,7 +1143,7 @@ void KeyboardLayoutView::_SendKeyDown(const Key* key) { KID_CALLED(); - + BMessage* message = new BMessage(B_KEY_DOWN); message->AddInt64("when", system_time()); message->AddData("states", B_UINT8_TYPE, &fKeyState, @@ -1171,4 +1171,5 @@ KeyboardLayoutView::_SendKeyDown(const Key* key) if (fDevice->EnqueueMessage(message) != B_OK) delete message; + } diff --git a/src/add-ons/input_server/devices/virtualkeyboard/VirtualKeyboardInputDevice.cpp b/src/add-ons/input_server/devices/virtualkeyboard/VirtualKeyboardInputDevice.cpp index cc2a9ad765..c3da0be780 100644 --- a/src/add-ons/input_server/devices/virtualkeyboard/VirtualKeyboardInputDevice.cpp +++ b/src/add-ons/input_server/devices/virtualkeyboard/VirtualKeyboardInputDevice.cpp @@ -15,7 +15,6 @@ instantiate_input_device() VirtualKeyboardInputDevice::VirtualKeyboardInputDevice() { - fKeyboardWindow = new VirtualKeyboardWindow(this); } @@ -39,6 +38,7 @@ VirtualKeyboardInputDevice::InitCheck() status_t VirtualKeyboardInputDevice::Start(const char* name, void* cookie) { + fKeyboardWindow = new VirtualKeyboardWindow(this); fKeyboardWindow->Show(); return B_OK; } @@ -47,7 +47,7 @@ VirtualKeyboardInputDevice::Start(const char* name, void* cookie) status_t VirtualKeyboardInputDevice::Stop(const char* name, void* cookie) { - if (fKeyboardWindow) { + if (fKeyboardWindow->Lock()) { fKeyboardWindow->Quit(); fKeyboardWindow = NULL; }