FreeRDP
Loading...
Searching...
No Matches
SdlContext Class Reference
Collaboration diagram for SdlContext:

Public Member Functions

 SdlContext (rdpContext *context)
 
 SdlContext (const SdlContext &other)=delete
 
 SdlContext (SdlContext &&other)=delete
 
SdlContextoperator= (const SdlContext &other)=delete
 
SdlContextoperator= (SdlContext &&other)=delete
 
BOOL update_resizeable (BOOL enable)
 
BOOL update_fullscreen (BOOL enter)
 
BOOL update_minimize ()
 
rdpContext * context () const
 
rdpClientContext * common () const
 
 SdlContext (rdpContext *context)
 
 SdlContext (const SdlContext &other)=delete
 
 SdlContext (SdlContext &&other)=delete
 
SdlContextoperator= (const SdlContext &other)=delete
 
SdlContextoperator= (SdlContext &&other)=delete
 
bool redraw (bool suppress=false) const
 
void setConnected (bool val)
 
bool isConnected () const
 
bool update_resizeable (bool enable)
 
bool update_fullscreen (bool enter)
 
bool update_minimize ()
 
rdpContext * context () const
 
rdpClientContext * common () const
 
void setCursor (rdpPointer *cursor)
 
rdpPointer * cursor () const
 
void setMonitorIds (const std::vector< SDL_DisplayID > &ids)
 
const std::vector< SDL_DisplayID > & monitorIds () const
 
int64_t monitorId (uint32_t index) const
 
void push (std::vector< SDL_Rect > &&rects)
 
std::vector< SDL_Rect > pop ()
 
void setHasCursor (bool val)
 
bool hasCursor () const
 
void setMetadata ()
 

Data Fields

wLog * log
 
bool fullscreen = false
 
bool resizeable = false
 
bool grab_mouse = false
 
bool grab_kbd = false
 
bool grab_kbd_enabled = true
 
std::map< Uint32, SdlWindowwindows
 
CriticalSection critical
 
std::thread thread
 
WinPREvent initialize
 
WinPREvent initialized
 
WinPREvent update_complete
 
WinPREvent windows_created
 
int exit_code = -1
 
sdlDispContext disp
 
sdlInput input
 
SDLSurfacePtr primary
 
SDLPixelFormatPtr primary_format
 
Uint32 sdl_pixel_format = 0
 
std::unique_ptr< SDLConnectionDialogconnection_dialog
 
std::atomic< bool > rdp_thread_running
 
sdlClip clip
 
SDL_PixelFormat sdl_pixel_format = SDL_PIXELFORMAT_UNKNOWN
 
SdlConnectionDialogWrapper dialog
 

Detailed Description

Definition at line 46 of file SDL2/sdl_freerdp.hpp.

Constructor & Destructor Documentation

◆ SdlContext()

SdlContext::SdlContext ( rdpContext *  context)
explicit

Definition at line 1761 of file SDL2/sdl_freerdp.cpp.

1762 : _context(context), log(WLog_Get(SDL_TAG)), update_complete(true), disp(this), input(this),
1763 primary(nullptr, SDL_FreeSurface), primary_format(nullptr, SDL_FreeFormat),
1764 rdp_thread_running(false)
1765{
1766 WINPR_ASSERT(context);
1767 grab_kbd_enabled = freerdp_settings_get_bool(context->settings, FreeRDP_GrabKeyboard);
1768}
FREERDP_API BOOL freerdp_settings_get_bool(const rdpSettings *settings, FreeRDP_Settings_Keys_Bool id)
Returns a boolean settings value.

Member Function Documentation

◆ common()

rdpClientContext * SdlContext::common ( ) const

Definition at line 1775 of file SDL2/sdl_freerdp.cpp.

1776{
1777 return reinterpret_cast<rdpClientContext*>(_context);
1778}

◆ context()

rdpContext * SdlContext::context ( ) const

Definition at line 1770 of file SDL2/sdl_freerdp.cpp.

1771{
1772 return _context;
1773}

◆ cursor()

rdpPointer * SdlContext::cursor ( ) const

Definition at line 1832 of file SDL3/sdl_freerdp.cpp.

1833{
1834 return _cursor;
1835}

◆ hasCursor()

bool SdlContext::hasCursor ( ) const

Definition at line 1776 of file SDL3/sdl_freerdp.cpp.

1777{
1778 return _cursor_visible;
1779}

◆ isConnected()

bool SdlContext::isConnected ( ) const

Definition at line 1811 of file SDL3/sdl_freerdp.cpp.

1812{
1813 return _connected;
1814}

◆ monitorId()

int64_t SdlContext::monitorId ( uint32_t  index) const

Definition at line 1851 of file SDL3/sdl_freerdp.cpp.

1852{
1853 if (index >= _monitorIds.size())
1854 {
1855 return -1;
1856 }
1857 return _monitorIds[index];
1858}

◆ monitorIds()

const std::vector< SDL_DisplayID > & SdlContext::monitorIds ( ) const

Definition at line 1846 of file SDL3/sdl_freerdp.cpp.

1847{
1848 return _monitorIds;
1849}

◆ pop()

std::vector< SDL_Rect > SdlContext::pop ( )

Definition at line 1866 of file SDL3/sdl_freerdp.cpp.

1867{
1868 std::unique_lock lock(_queue_mux);
1869 if (_queue.empty())
1870 {
1871 return {};
1872 }
1873 auto val = std::move(_queue.front());
1874 _queue.pop();
1875 return val;
1876}

◆ push()

void SdlContext::push ( std::vector< SDL_Rect > &&  rects)

Definition at line 1860 of file SDL3/sdl_freerdp.cpp.

1861{
1862 std::unique_lock lock(_queue_mux);
1863 _queue.emplace(std::move(rects));
1864}

◆ redraw()

bool SdlContext::redraw ( bool  suppress = false) const

Definition at line 1796 of file SDL3/sdl_freerdp.cpp.

1797{
1798 if (!_connected)
1799 return true;
1800
1801 auto gdi = context()->gdi;
1802 WINPR_ASSERT(gdi);
1803 return gdi_send_suppress_output(gdi, suppress);
1804}

◆ setConnected()

void SdlContext::setConnected ( bool  val)

Definition at line 1806 of file SDL3/sdl_freerdp.cpp.

1807{
1808 _connected = val;
1809}

◆ setCursor()

void SdlContext::setCursor ( rdpPointer *  cursor)

Definition at line 1827 of file SDL3/sdl_freerdp.cpp.

1828{
1829 _cursor = cursor;
1830}

◆ setHasCursor()

void SdlContext::setHasCursor ( bool  val)

Definition at line 1771 of file SDL3/sdl_freerdp.cpp.

1772{
1773 this->_cursor_visible = val;
1774}

◆ setMetadata()

void SdlContext::setMetadata ( )

Definition at line 1781 of file SDL3/sdl_freerdp.cpp.

1782{
1783 auto wmclass = freerdp_settings_get_string(_context->settings, FreeRDP_WmClass);
1784 if (!wmclass || (strlen(wmclass) == 0))
1785 wmclass = SDL_CLIENT_UUID;
1786
1787 SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_IDENTIFIER_STRING, wmclass);
1788 SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_NAME_STRING, SDL_CLIENT_NAME);
1789 SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_VERSION_STRING, SDL_CLIENT_VERSION);
1790 SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_CREATOR_STRING, SDL_CLIENT_VENDOR);
1791 SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_COPYRIGHT_STRING, SDL_CLIENT_COPYRIGHT);
1792 SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_URL_STRING, SDL_CLIENT_URL);
1793 SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_TYPE_STRING, SDL_CLIENT_TYPE);
1794}
FREERDP_API const char * freerdp_settings_get_string(const rdpSettings *settings, FreeRDP_Settings_Keys_String id)
Returns a immutable string settings value.

◆ setMonitorIds()

void SdlContext::setMonitorIds ( const std::vector< SDL_DisplayID > &  ids)

Definition at line 1837 of file SDL3/sdl_freerdp.cpp.

1838{
1839 _monitorIds.clear();
1840 for (auto id : ids)
1841 {
1842 _monitorIds.push_back(id);
1843 }
1844}

◆ update_fullscreen() [1/2]

BOOL SdlContext::update_fullscreen ( BOOL  enter)

Definition at line 1724 of file SDL2/sdl_freerdp.cpp.

1725{
1726 std::lock_guard<CriticalSection> lock(critical);
1727 for (const auto& window : windows)
1728 {
1729 if (!sdl_push_user_event(SDL_USEREVENT_WINDOW_FULLSCREEN, &window.second, enter))
1730 return FALSE;
1731 }
1732 fullscreen = enter;
1733 return TRUE;
1734}

◆ update_fullscreen() [2/2]

bool SdlContext::update_fullscreen ( bool  enter)

Definition at line 1730 of file SDL3/sdl_freerdp.cpp.

1731{
1732 for (const auto& window : windows)
1733 {
1734 if (!sdl_push_user_event(SDL_EVENT_USER_WINDOW_FULLSCREEN, &window.second, enter))
1735 return false;
1736 }
1737 fullscreen = enter;
1738 return true;
1739}

◆ update_minimize()

bool SdlContext::update_minimize ( )

Definition at line 1736 of file SDL2/sdl_freerdp.cpp.

1737{
1738 std::lock_guard<CriticalSection> lock(critical);
1739 return sdl_push_user_event(SDL_USEREVENT_WINDOW_MINIMIZE);
1740}

◆ update_resizeable() [1/2]

BOOL SdlContext::update_resizeable ( BOOL  enable)

Definition at line 1742 of file SDL2/sdl_freerdp.cpp.

1743{
1744 std::lock_guard<CriticalSection> lock(critical);
1745
1746 const auto settings = context()->settings;
1747 const BOOL dyn = freerdp_settings_get_bool(settings, FreeRDP_DynamicResolutionUpdate);
1748 const BOOL smart = freerdp_settings_get_bool(settings, FreeRDP_SmartSizing);
1749 BOOL use = (dyn && enable) || smart;
1750
1751 for (const auto& window : windows)
1752 {
1753 if (!sdl_push_user_event(SDL_USEREVENT_WINDOW_RESIZEABLE, &window.second, use))
1754 return FALSE;
1755 }
1756 resizeable = use;
1757
1758 return TRUE;
1759}

◆ update_resizeable() [2/2]

bool SdlContext::update_resizeable ( bool  enable)

Definition at line 1746 of file SDL3/sdl_freerdp.cpp.

1747{
1748 const auto settings = context()->settings;
1749 const bool dyn = freerdp_settings_get_bool(settings, FreeRDP_DynamicResolutionUpdate);
1750 const bool smart = freerdp_settings_get_bool(settings, FreeRDP_SmartSizing);
1751 bool use = (dyn && enable) || smart;
1752
1753 for (const auto& window : windows)
1754 {
1755 if (!sdl_push_user_event(SDL_EVENT_USER_WINDOW_RESIZEABLE, &window.second, use))
1756 return false;
1757 }
1758 resizeable = use;
1759
1760 return true;
1761}

Field Documentation

◆ clip

sdlClip SdlContext::clip

Definition at line 115 of file SDL3/sdl_freerdp.hpp.

◆ connection_dialog

std::unique_ptr<SDLConnectionDialog> SdlContext::connection_dialog

Definition at line 88 of file SDL2/sdl_freerdp.hpp.

◆ critical

CriticalSection SdlContext::critical

Definition at line 72 of file SDL2/sdl_freerdp.hpp.

◆ dialog

SdlConnectionDialogWrapper SdlContext::dialog

Definition at line 122 of file SDL3/sdl_freerdp.hpp.

◆ disp

sdlDispContext SdlContext::disp

Definition at line 80 of file SDL2/sdl_freerdp.hpp.

◆ exit_code

int SdlContext::exit_code = -1

Definition at line 78 of file SDL2/sdl_freerdp.hpp.

◆ fullscreen

bool SdlContext::fullscreen = false

Definition at line 64 of file SDL2/sdl_freerdp.hpp.

◆ grab_kbd

bool SdlContext::grab_kbd = false

Definition at line 67 of file SDL2/sdl_freerdp.hpp.

◆ grab_kbd_enabled

bool SdlContext::grab_kbd_enabled = true

Definition at line 68 of file SDL2/sdl_freerdp.hpp.

◆ grab_mouse

bool SdlContext::grab_mouse = false

Definition at line 66 of file SDL2/sdl_freerdp.hpp.

◆ initialize

WinPREvent SdlContext::initialize

Definition at line 74 of file SDL2/sdl_freerdp.hpp.

◆ initialized

WinPREvent SdlContext::initialized

Definition at line 75 of file SDL2/sdl_freerdp.hpp.

◆ input

sdlInput SdlContext::input

Definition at line 81 of file SDL2/sdl_freerdp.hpp.

◆ log

wLog * SdlContext::log

Definition at line 61 of file SDL2/sdl_freerdp.hpp.

◆ primary

SDLSurfacePtr SdlContext::primary

Definition at line 83 of file SDL2/sdl_freerdp.hpp.

◆ primary_format

SDLPixelFormatPtr SdlContext::primary_format

Definition at line 84 of file SDL2/sdl_freerdp.hpp.

◆ rdp_thread_running

std::atomic< bool > SdlContext::rdp_thread_running

Definition at line 90 of file SDL2/sdl_freerdp.hpp.

◆ resizeable

bool SdlContext::resizeable = false

Definition at line 65 of file SDL2/sdl_freerdp.hpp.

◆ sdl_pixel_format [1/2]

Uint32 SdlContext::sdl_pixel_format = 0

Definition at line 86 of file SDL2/sdl_freerdp.hpp.

◆ sdl_pixel_format [2/2]

SDL_PixelFormat SdlContext::sdl_pixel_format = SDL_PIXELFORMAT_UNKNOWN

Definition at line 119 of file SDL3/sdl_freerdp.hpp.

◆ thread

std::thread SdlContext::thread

Definition at line 73 of file SDL2/sdl_freerdp.hpp.

◆ update_complete

WinPREvent SdlContext::update_complete

Definition at line 76 of file SDL2/sdl_freerdp.hpp.

◆ windows

std::map< Uint32, SdlWindow > SdlContext::windows

Definition at line 70 of file SDL2/sdl_freerdp.hpp.

◆ windows_created

WinPREvent SdlContext::windows_created

Definition at line 77 of file SDL2/sdl_freerdp.hpp.


The documentation for this class was generated from the following files: