summaryrefslogtreecommitdiff
path: root/platform/haiku/haiku_direct_window.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/haiku/haiku_direct_window.cpp')
-rw-r--r--platform/haiku/haiku_direct_window.cpp42
1 files changed, 35 insertions, 7 deletions
diff --git a/platform/haiku/haiku_direct_window.cpp b/platform/haiku/haiku_direct_window.cpp
index 8c8069af49..e400d70108 100644
--- a/platform/haiku/haiku_direct_window.cpp
+++ b/platform/haiku/haiku_direct_window.cpp
@@ -23,7 +23,7 @@ void HaikuDirectWindow::SetHaikuGLView(HaikuGLView* p_view) {
void HaikuDirectWindow::StartMessageRunner() {
update_runner = new BMessageRunner(BMessenger(this),
- new BMessage(REDRAW_MSG), 1000000/60 /* 60 fps */);
+ new BMessage(REDRAW_MSG), 1000000/30 /* 30 fps */);
}
void HaikuDirectWindow::StopMessageRunner() {
@@ -68,15 +68,31 @@ void HaikuDirectWindow::DispatchMessage(BMessage* message, BHandler* handler) {
switch (message->what) {
case B_MOUSE_DOWN:
case B_MOUSE_UP:
- DispatchMouseButton(message);
+ HandleMouseButton(message);
break;
case B_MOUSE_MOVED:
- DispatchMouseMoved(message);
+ HandleMouseMoved(message);
break;
case B_MOUSE_WHEEL_CHANGED:
- DispatchMouseWheelChanged(message);
+ HandleMouseWheelChanged(message);
+ break;
+
+ case B_WINDOW_RESIZED:
+ HandleWindowResized(message);
+ //view->UnlockGL();
+ //BDirectWindow::DispatchMessage(message, handler);
+ //view->LockGL();
+ break;
+
+ case LOCKGL_MSG:
+ ERR_PRINT("LOCKGL");
+ view->LockGL();
+ break;
+
+ case UNLOCKGL_MSG:
+ view->UnlockGL();
break;
default:
@@ -84,7 +100,7 @@ void HaikuDirectWindow::DispatchMessage(BMessage* message, BHandler* handler) {
}
}
-void HaikuDirectWindow::DispatchMouseButton(BMessage* message) {
+void HaikuDirectWindow::HandleMouseButton(BMessage* message) {
message->PrintToStream();
BPoint where;
@@ -143,7 +159,7 @@ void HaikuDirectWindow::DispatchMouseButton(BMessage* message) {
input->parse_input_event(mouse_event);
}
-void HaikuDirectWindow::DispatchMouseMoved(BMessage* message) {
+void HaikuDirectWindow::HandleMouseMoved(BMessage* message) {
BPoint where;
if (message->FindPoint("where", &where) != B_OK) {
return;
@@ -183,7 +199,7 @@ void HaikuDirectWindow::DispatchMouseMoved(BMessage* message) {
input->parse_input_event(motion_event);
}
-void HaikuDirectWindow::DispatchMouseWheelChanged(BMessage* message) {
+void HaikuDirectWindow::HandleMouseWheelChanged(BMessage* message) {
float wheel_delta_y = 0;
if (message->FindFloat("be:wheel_delta_y", &wheel_delta_y) != B_OK) {
return;
@@ -210,6 +226,18 @@ void HaikuDirectWindow::DispatchMouseWheelChanged(BMessage* message) {
input->parse_input_event(mouse_event);
}
+void HaikuDirectWindow::HandleWindowResized(BMessage* message) {
+ int32 width = 0;
+ int32 height = 0;
+
+ if ((message->FindInt32("width", &width) != B_OK) || (message->FindInt32("height", &height) != B_OK)) {
+ return;
+ }
+
+ current_video_mode->width = width;
+ current_video_mode->height = height;
+}
+
inline InputModifierState HaikuDirectWindow::GetKeyModifierState(uint32 p_state) {
last_key_modifier_state = p_state;
InputModifierState state;