Merge pull request #11820 from akallabeth/sdl-console

[client,sdl] disable connection dialog
This commit is contained in:
akallabeth
2025-08-28 15:09:09 +02:00
committed by GitHub
3 changed files with 32 additions and 14 deletions

View File

@@ -20,17 +20,27 @@
#include <sstream>
#include <freerdp/freerdp.h>
#include <freerdp/settings.h>
#include <freerdp/log.h>
#include "../sdl_utils.hpp"
#include "sdl_connection_dialog.hpp"
#include "sdl_connection_dialog_wrapper.hpp"
SdlConnectionDialogWrapper::SdlConnectionDialogWrapper() = default;
SdlConnectionDialogWrapper::SdlConnectionDialogWrapper(wLog* log) : _log(log)
{
}
SdlConnectionDialogWrapper::~SdlConnectionDialogWrapper() = default;
void SdlConnectionDialogWrapper::create(rdpContext* context)
{
_connection_dialog = std::make_unique<SDLConnectionDialog>(context);
const auto enabled =
freerdp_settings_get_bool(context->settings, FreeRDP_UseCommonStdioCallbacks);
_connection_dialog.reset();
if (!enabled)
_connection_dialog = std::make_unique<SDLConnectionDialog>(context);
}
void SdlConnectionDialogWrapper::destroy()
@@ -154,10 +164,7 @@ void SdlConnectionDialogWrapper::handleShow()
auto arg = _queue.front();
_queue.pop();
if (!_connection_dialog)
continue;
if (arg.hasTitle())
if (arg.hasTitle() && _connection_dialog)
{
_connection_dialog->setTitle(arg.title().c_str());
}
@@ -167,20 +174,29 @@ void SdlConnectionDialogWrapper::handleShow()
switch (arg.type())
{
case SdlConnectionDialogWrapper::MSG_INFO:
_connection_dialog->showInfo(arg.message().c_str());
if (_connection_dialog)
_connection_dialog->showInfo(arg.message().c_str());
else
WLog_Print(_log, WLOG_INFO, "%s", arg.message().c_str());
break;
case SdlConnectionDialogWrapper::MSG_WARN:
_connection_dialog->showWarn(arg.message().c_str());
if (_connection_dialog)
_connection_dialog->showWarn(arg.message().c_str());
else
WLog_Print(_log, WLOG_WARN, "%s", arg.message().c_str());
break;
case SdlConnectionDialogWrapper::MSG_ERROR:
_connection_dialog->showError(arg.message().c_str());
if (_connection_dialog)
_connection_dialog->showError(arg.message().c_str());
else
WLog_Print(_log, WLOG_ERROR, "%s", arg.message().c_str());
break;
default:
break;
}
}
if (arg.hasVisibility())
if (arg.hasVisibility() && _connection_dialog)
{
if (arg.visible())
_connection_dialog->show();

View File

@@ -25,6 +25,7 @@
#include <string>
#include <queue>
#include <winpr/wlog.h>
#include <winpr/platform.h>
#include <freerdp/types.h>
@@ -44,7 +45,7 @@ class SdlConnectionDialogWrapper
MSG_DISCARD
};
SdlConnectionDialogWrapper();
explicit SdlConnectionDialogWrapper(wLog* log);
~SdlConnectionDialogWrapper();
SdlConnectionDialogWrapper(const SdlConnectionDialogWrapper& other) = delete;
@@ -115,6 +116,7 @@ class SdlConnectionDialogWrapper
void push(EventArg&& arg);
mutable std::mutex _mux;
std::unique_ptr<SDLConnectionDialog> _connection_dialog;
std::queue<EventArg> _queue;
std::unique_ptr<SDLConnectionDialog> _connection_dialog{};
std::queue<EventArg> _queue{};
wLog* _log = nullptr;
};

View File

@@ -1744,7 +1744,7 @@ bool SdlContext::update_resizeable(bool enable)
SdlContext::SdlContext(rdpContext* context)
: _context(context), log(WLog_Get(SDL_TAG)), disp(this), input(this), clip(this),
primary(nullptr, SDL_DestroySurface), rdp_thread_running(false)
primary(nullptr, SDL_DestroySurface), rdp_thread_running(false), dialog(log)
{
WINPR_ASSERT(context);