[winpr,pubsub] check return of PubSub_Subscribe

This commit is contained in:
Armin Novak
2026-02-27 11:56:23 +01:00
parent 7b47aac9e6
commit 0445ed6734
11 changed files with 70 additions and 44 deletions

View File

@@ -1178,8 +1178,11 @@ static BOOL xf_pre_connect(freerdp* instance)
return FALSE;
if (!freerdp_settings_set_uint32(settings, FreeRDP_OsMinorType, OSMINORTYPE_NATIVE_XSERVER))
return FALSE;
PubSub_SubscribeChannelConnected(context->pubSub, xf_OnChannelConnectedEventHandler);
PubSub_SubscribeChannelDisconnected(context->pubSub, xf_OnChannelDisconnectedEventHandler);
if (PubSub_SubscribeChannelConnected(context->pubSub, xf_OnChannelConnectedEventHandler) < 0)
return FALSE;
if (PubSub_SubscribeChannelDisconnected(context->pubSub, xf_OnChannelDisconnectedEventHandler) <
0)
return FALSE;
if (!freerdp_settings_get_string(settings, FreeRDP_Username) &&
!freerdp_settings_get_bool(settings, FreeRDP_CredentialsFromStdin) &&
@@ -2058,10 +2061,13 @@ static BOOL xfreerdp_client_new(freerdp* instance, rdpContext* context)
instance->PostFinalDisconnect = xf_post_final_disconnect;
instance->LogonErrorInfo = xf_logon_error_info;
instance->GetAccessToken = client_cli_get_access_token;
PubSub_SubscribeTerminate(context->pubSub, xf_TerminateEventHandler);
if (PubSub_SubscribeTerminate(context->pubSub, xf_TerminateEventHandler) < 0)
return FALSE;
#ifdef WITH_XRENDER
PubSub_SubscribeZoomingChange(context->pubSub, xf_ZoomingChangeEventHandler);
PubSub_SubscribePanningChange(context->pubSub, xf_PanningChangeEventHandler);
if (PubSub_SubscribeZoomingChange(context->pubSub, xf_ZoomingChangeEventHandler) < 0)
return FALSE;
if (PubSub_SubscribePanningChange(context->pubSub, xf_PanningChangeEventHandler) < 0)
return FALSE;
#endif
xfc->log = WLog_Get(TAG);

View File

@@ -333,19 +333,22 @@ static void xf_disp_OnWindowStateChange(void* context, const WindowStateChangeEv
xfDispContext* xf_disp_new(xfContext* xfc)
{
xfDispContext* ret = nullptr;
const rdpSettings* settings = nullptr;
wPubSub* pubSub = nullptr;
WINPR_ASSERT(xfc);
pubSub = xfc->common.context.pubSub;
wPubSub* pubSub = xfc->common.context.pubSub;
WINPR_ASSERT(pubSub);
settings = xfc->common.context.settings;
const rdpSettings* settings = xfc->common.context.settings;
WINPR_ASSERT(settings);
ret = calloc(1, sizeof(xfDispContext));
if (PubSub_SubscribeActivated(pubSub, xf_disp_OnActivated) < 0)
return nullptr;
if (PubSub_SubscribeGraphicsReset(pubSub, xf_disp_OnGraphicsReset) < 0)
return nullptr;
if (PubSub_SubscribeWindowStateChange(pubSub, xf_disp_OnWindowStateChange) < 0)
return nullptr;
xfDispContext* ret = calloc(1, sizeof(xfDispContext));
if (!ret)
return nullptr;
@@ -363,9 +366,6 @@ xfDispContext* xf_disp_new(xfContext* xfc)
freerdp_settings_get_uint32(settings, FreeRDP_DesktopWidth);
ret->lastSentHeight = ret->targetHeight =
freerdp_settings_get_uint32(settings, FreeRDP_DesktopHeight);
PubSub_SubscribeActivated(pubSub, xf_disp_OnActivated);
PubSub_SubscribeGraphicsReset(pubSub, xf_disp_OnGraphicsReset);
PubSub_SubscribeWindowStateChange(pubSub, xf_disp_OnWindowStateChange);
return ret;
}