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 handleEvent(
const SDL_DisplayEvent& ev);
47 [[nodiscard]]
bool handleEvent(
const SDL_WindowEvent& ev);
50 [[nodiscard]] UINT DisplayControlCaps(UINT32 maxNumMonitors, UINT32 maxMonitorAreaFactorA,
51 UINT32 maxMonitorAreaFactorB);
52 [[nodiscard]]
bool setWindowResizeable();
54 [[nodiscard]]
bool sendResize();
55 [[nodiscard]]
bool settings_changed(
const std::vector<DISPLAY_CONTROL_MONITOR_LAYOUT>& layout);
56 [[nodiscard]]
bool sendLayout(
const rdpMonitor* monitors,
size_t nmonitors);
58 [[nodiscard]]
bool addTimer();
60 [[nodiscard]]
bool updateMonitor(SDL_WindowID
id);
61 [[nodiscard]]
bool updateMonitors(SDL_EventType type, SDL_DisplayID displayID);
63 [[nodiscard]]
static UINT DisplayControlCaps(DispClientContext* disp, UINT32 maxNumMonitors,
64 UINT32 maxMonitorAreaFactorA,
65 UINT32 maxMonitorAreaFactorB);
66 static void OnActivated(
void* context,
const ActivatedEventArgs* e);
67 static void OnGraphicsReset(
void* context,
const GraphicsResetEventArgs* e);
68 [[nodiscard]]
static Uint32 SDLCALL OnTimer(
void* param, SDL_TimerID timerID, Uint32 interval);
71 DispClientContext* _disp =
nullptr;
72 UINT64 _lastSentDate = 0;
73 bool _activated =
false;
74 bool _waitingResize =
false;
75 SDL_TimerID _timer = 0;
76 unsigned _timer_retries = 0;
77 std::vector<DISPLAY_CONTROL_MONITOR_LAYOUT> _last_sent_layout;