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;