[client,sdl] set metadata after command line parsing

This allows to apply a user provided /wm-class setting.
This commit is contained in:
akallabeth
2025-09-26 10:10:42 +02:00
parent f070c87d75
commit 07c2c39972
3 changed files with 20 additions and 8 deletions

View File

@@ -1678,6 +1678,7 @@ int main(int argc, char* argv[])
WINPR_ASSERT(settings);
status = freerdp_client_settings_parse_command_line(settings, argc, argv, FALSE);
sdl_rdp->sdl->setMetadata();
if (status)
{
rc = freerdp_client_settings_command_line_status_print(settings, status, argc, argv);
@@ -1762,14 +1763,7 @@ SdlContext::SdlContext(rdpContext* context)
primary(nullptr, SDL_DestroySurface), rdp_thread_running(false), dialog(log)
{
WINPR_ASSERT(context);
SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_NAME_STRING, SDL_CLIENT_NAME);
SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_VERSION_STRING, SDL_CLIENT_VERSION);
SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_IDENTIFIER_STRING, SDL_CLIENT_UUID);
SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_CREATOR_STRING, SDL_CLIENT_VENDOR);
SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_COPYRIGHT_STRING, SDL_CLIENT_COPYRIGHT);
SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_URL_STRING, SDL_CLIENT_URL);
SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_TYPE_STRING, SDL_CLIENT_TYPE);
setMetadata();
}
void SdlContext::setHasCursor(bool val)
@@ -1782,6 +1776,21 @@ bool SdlContext::hasCursor() const
return _cursor_visible;
}
void SdlContext::setMetadata()
{
auto wmclass = freerdp_settings_get_string(_context->settings, FreeRDP_WmClass);
if (!wmclass || (strlen(wmclass) == 0))
wmclass = SDL_CLIENT_UUID;
SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_IDENTIFIER_STRING, wmclass);
SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_NAME_STRING, SDL_CLIENT_NAME);
SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_VERSION_STRING, SDL_CLIENT_VERSION);
SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_CREATOR_STRING, SDL_CLIENT_VENDOR);
SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_COPYRIGHT_STRING, SDL_CLIENT_COPYRIGHT);
SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_URL_STRING, SDL_CLIENT_URL);
SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_TYPE_STRING, SDL_CLIENT_TYPE);
}
bool SdlContext::redraw(bool suppress) const
{
if (!_connected)

View File

@@ -81,6 +81,8 @@ class SdlContext
void setHasCursor(bool val);
[[nodiscard]] bool hasCursor() const;
void setMetadata();
private:
rdpContext* _context;
std::atomic<bool> _connected = false;

View File

@@ -47,6 +47,7 @@ SdlWindow::SdlWindow(const std::string& title, Sint32 startupX, Sint32 startupY,
auto w = 100 * width / iscale;
auto h = 100 * height / iscale;
(void)SDL_SetWindowSize(_window, w, h);
SDL_SetHint(SDL_HINT_APP_NAME, "");
(void)SDL_SyncWindow(_window);
}