haiku_direct_window.cpp 973 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include "haiku_direct_window.h"
  2. HaikuDirectWindow::HaikuDirectWindow(BRect p_frame)
  3. : BDirectWindow(p_frame, "Godot", B_TITLED_WINDOW, 0)
  4. {
  5. // TODO: formatting
  6. float minWidth = 0.0f;
  7. float maxWidth = 0.0f;
  8. float minHeight = 0.0f;
  9. float maxHeight = 0.0f;
  10. GetSizeLimits(&minWidth, &maxWidth, &minHeight, &maxHeight);
  11. SetSizeLimits(50.0f, maxWidth, 50.0f, maxHeight);
  12. }
  13. HaikuDirectWindow::~HaikuDirectWindow()
  14. {
  15. delete update_runner;
  16. }
  17. void HaikuDirectWindow::SetHaikuGLView(HaikuGLView* p_view) {
  18. view = p_view;
  19. }
  20. void HaikuDirectWindow::InitMessageRunner() {
  21. update_runner = new BMessageRunner(BMessenger(view),
  22. new BMessage(REDRAW_MSG), 1000000/60 /* 60 fps */);
  23. }
  24. bool HaikuDirectWindow::QuitRequested()
  25. {
  26. view->EnableDirectMode(false);
  27. be_app->PostMessage(B_QUIT_REQUESTED);
  28. return true;
  29. }
  30. void HaikuDirectWindow::DirectConnected(direct_buffer_info *info)
  31. {
  32. view->DirectConnected(info);
  33. view->EnableDirectMode(true);
  34. }