Code: Select all
Procedure MainLoop()
Define.i event, frame_time, delta_time.f, mouse_released.b
Repeat
If view\display_mode <> #DISPLAY_FULLSCREEN
Repeat
; Handle window events.
event = WindowEvent()
Select event
Case #PB_Event_ActivateWindow, #PB_Event_LeftClick
ReleaseMouse(#False) : mouse_released = #False
Case #PB_Event_DeactivateWindow
ReleaseMouse(#True) : mouse_released = #True
EndSelect
If event
view\callback_window_events(event)
EndIf
Until event = 0
EndIf
; Handle input events.
If mouse_released = #False
ExamineMouse() : ExamineKeyboard()
If view\display_mode = #DISPLAY_WINDOWED And KeyboardReleased(#PB_Key_Escape)
ReleaseMouse(#True) : mouse_released = #True
EndIf
view\callback_input_events()
EndIf
; Update graphics.
delta_time = (ElapsedMilliseconds() - frame_time) / 1000
frame_time = ElapsedMilliseconds()
view\callback_update(delta_time)
; Render graphics.
ClearScreen(0)
view\callback_render()
If view\show_debug_bar
UpdateDebugBar()
DisplaySprite(view\debug_bar_sprite, 0, 0)
EndIf
FlipBuffers()
ForEver
EndProcedure
To reproduce, download the repo and comment/uncomment those lines in xyView_Tests.pb: (33, 34)
Code: Select all
xyView::StartLoopInWindowed(500, 300, "title") ; Lags when mouse moves.
; xyView::StartLoopInFullScreen("title") ; Doesn't lag.
Would appreciate if someone could take a look at this and confirm