23#include <freerdp/types.h>
24#include <freerdp/event.h>
25#include <freerdp/client/disp.h>
27#include "sdl_types.hpp"
43 [[nodiscard]]
bool init(DispClientContext* disp);
44 [[nodiscard]]
bool uninit(DispClientContext* disp);
46 [[nodiscard]]
bool handle_display_event(
const SDL_DisplayEvent* ev);
47 [[nodiscard]]
bool handle_window_event(
const SDL_WindowEvent* ev);
50 UINT DisplayControlCaps(UINT32 maxNumMonitors, UINT32 maxMonitorAreaFactorA,
51 UINT32 maxMonitorAreaFactorB);
52 bool set_window_resizable();
55 bool settings_changed(
const std::vector<DISPLAY_CONTROL_MONITOR_LAYOUT>& layout);
56 UINT sendLayout(
const rdpMonitor* monitors,
size_t nmonitors);
60 bool updateMonitor(SDL_WindowID
id);
61 bool updateMonitors(SDL_EventType type);
63 static UINT DisplayControlCaps(DispClientContext* disp, UINT32 maxNumMonitors,
64 UINT32 maxMonitorAreaFactorA, UINT32 maxMonitorAreaFactorB);
65 static void OnActivated(
void* context,
const ActivatedEventArgs* e);
66 static void OnGraphicsReset(
void* context,
const GraphicsResetEventArgs* e);
67 static Uint32 SDLCALL OnTimer(
void* param, SDL_TimerID timerID, Uint32 interval);
70 DispClientContext* _disp =
nullptr;
71 UINT64 _lastSentDate = 0;
72 bool _activated =
false;
73 bool _waitingResize =
false;
74 SDL_TimerID _timer = 0;
75 unsigned _timer_retries = 0;
76 std::vector<DISPLAY_CONTROL_MONITOR_LAYOUT> _last_sent_layout;