mirror of https://github.com/FreeRDP/FreeRDP
freerdp: remove temporary rdpClient* interface and replace with pubSub hooks
This commit is contained in:
parent
6c9a3b8e64
commit
59b7c53c5f
|
@ -498,7 +498,7 @@ void xf_toggle_fullscreen(xfContext* xfc)
|
||||||
|
|
||||||
e.state = xfc->fullscreen ? FREERDP_WINDOW_STATE_FULLSCREEN : 0;
|
e.state = xfc->fullscreen ? FREERDP_WINDOW_STATE_FULLSCREEN : 0;
|
||||||
|
|
||||||
PubSub_OnEvent(xfc->pubSub, "WindowStateChange", xfc, (wEventArgs*) &e);
|
PubSub_OnEvent(((rdpContext*) xfc)->pubSub, "WindowStateChange", xfc, (wEventArgs*) &e);
|
||||||
}
|
}
|
||||||
|
|
||||||
void xf_lock_x11(xfContext* xfc, BOOL display)
|
void xf_lock_x11(xfContext* xfc, BOOL display)
|
||||||
|
@ -897,7 +897,7 @@ BOOL xf_post_connect(freerdp* instance)
|
||||||
e.width = settings->DesktopWidth;
|
e.width = settings->DesktopWidth;
|
||||||
e.height = settings->DesktopHeight;
|
e.height = settings->DesktopHeight;
|
||||||
|
|
||||||
PubSub_OnEvent(xfc->pubSub, "ResizeWindow", xfc, (wEventArgs*) &e);
|
PubSub_OnEvent(((rdpContext*) xfc)->pubSub, "ResizeWindow", xfc, (wEventArgs*) &e);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -1553,11 +1553,6 @@ int xfreerdp_client_stop(rdpContext* context)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
rdpClient* freerdp_client_get_interface(rdpContext* context)
|
|
||||||
{
|
|
||||||
return context->client;
|
|
||||||
}
|
|
||||||
|
|
||||||
double freerdp_client_get_scale(rdpContext* context)
|
double freerdp_client_get_scale(rdpContext* context)
|
||||||
{
|
{
|
||||||
xfContext* xfc = (xfContext*) context;
|
xfContext* xfc = (xfContext*) context;
|
||||||
|
@ -1574,7 +1569,7 @@ void freerdp_client_reset_scale(rdpContext* context)
|
||||||
|
|
||||||
e.width = (int) xfc->originalWidth * xfc->scale;
|
e.width = (int) xfc->originalWidth * xfc->scale;
|
||||||
e.height = (int) xfc->originalHeight * xfc->scale;
|
e.height = (int) xfc->originalHeight * xfc->scale;
|
||||||
PubSub_OnEvent(xfc->pubSub, "ResizeWindow", xfc, (wEventArgs*) &e);
|
PubSub_OnEvent(((rdpContext*) xfc)->pubSub, "ResizeWindow", xfc, (wEventArgs*) &e);
|
||||||
|
|
||||||
xf_draw_screen_scaled(xfc);
|
xf_draw_screen_scaled(xfc);
|
||||||
}
|
}
|
||||||
|
@ -1596,7 +1591,6 @@ int xfreerdp_client_new(freerdp* instance, rdpContext* context)
|
||||||
context->channels = freerdp_channels_new();
|
context->channels = freerdp_channels_new();
|
||||||
|
|
||||||
settings = instance->settings;
|
settings = instance->settings;
|
||||||
xfc->client = instance->context->client;
|
|
||||||
xfc->settings = instance->context->settings;
|
xfc->settings = instance->context->settings;
|
||||||
|
|
||||||
settings->OsMajorType = OSMAJORTYPE_UNIX;
|
settings->OsMajorType = OSMAJORTYPE_UNIX;
|
||||||
|
|
|
@ -199,7 +199,7 @@ void xf_input_detect_pinch(xfContext* xfc)
|
||||||
|
|
||||||
e.width = (int) xfc->originalWidth * xfc->scale;
|
e.width = (int) xfc->originalWidth * xfc->scale;
|
||||||
e.height = (int) xfc->originalHeight * xfc->scale;
|
e.height = (int) xfc->originalHeight * xfc->scale;
|
||||||
PubSub_OnEvent(xfc->pubSub, "ResizeWindow", xfc, (wEventArgs*) &e);
|
PubSub_OnEvent(((rdpContext*) xfc)->pubSub, "ResizeWindow", xfc, (wEventArgs*) &e);
|
||||||
|
|
||||||
z_vector = 0;
|
z_vector = 0;
|
||||||
}
|
}
|
||||||
|
@ -215,7 +215,7 @@ void xf_input_detect_pinch(xfContext* xfc)
|
||||||
|
|
||||||
e.width = (int) xfc->originalWidth * xfc->scale;
|
e.width = (int) xfc->originalWidth * xfc->scale;
|
||||||
e.height = (int) xfc->originalHeight * xfc->scale;
|
e.height = (int) xfc->originalHeight * xfc->scale;
|
||||||
PubSub_OnEvent(xfc->pubSub, "ResizeWindow", xfc, (wEventArgs*) &e);
|
PubSub_OnEvent(((rdpContext*) xfc)->pubSub, "ResizeWindow", xfc, (wEventArgs*) &e);
|
||||||
|
|
||||||
z_vector = 0;
|
z_vector = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,6 @@ struct xf_context
|
||||||
DEFINE_RDP_CLIENT_COMMON();
|
DEFINE_RDP_CLIENT_COMMON();
|
||||||
|
|
||||||
freerdp* instance;
|
freerdp* instance;
|
||||||
rdpClient* client;
|
|
||||||
rdpSettings* settings;
|
rdpSettings* settings;
|
||||||
|
|
||||||
GC gc;
|
GC gc;
|
||||||
|
|
|
@ -26,36 +26,15 @@
|
||||||
#include <freerdp/client/file.h>
|
#include <freerdp/client/file.h>
|
||||||
#include <freerdp/client/cmdline.h>
|
#include <freerdp/client/cmdline.h>
|
||||||
|
|
||||||
static wEvent Client_Events[] =
|
|
||||||
{
|
|
||||||
DEFINE_EVENT_ENTRY(WindowStateChange)
|
|
||||||
DEFINE_EVENT_ENTRY(ResizeWindow)
|
|
||||||
};
|
|
||||||
|
|
||||||
int freerdp_client_common_new(freerdp* instance, rdpContext* context)
|
int freerdp_client_common_new(freerdp* instance, rdpContext* context)
|
||||||
{
|
{
|
||||||
rdpClientContext* clientContext;
|
RDP_CLIENT_ENTRY_POINTS* pEntryPoints = instance->pClientEntryPoints;
|
||||||
RDP_CLIENT_ENTRY_POINTS* pEntryPoints;
|
|
||||||
|
|
||||||
clientContext = (rdpClientContext*) context;
|
|
||||||
pEntryPoints = instance->pClientEntryPoints;
|
|
||||||
|
|
||||||
clientContext->pubSub = PubSub_New(TRUE);
|
|
||||||
PubSub_Publish(clientContext->pubSub, Client_Events, sizeof(Client_Events) / sizeof(wEvent));
|
|
||||||
|
|
||||||
return pEntryPoints->ClientNew(instance, context);
|
return pEntryPoints->ClientNew(instance, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
void freerdp_client_common_free(freerdp* instance, rdpContext* context)
|
void freerdp_client_common_free(freerdp* instance, rdpContext* context)
|
||||||
{
|
{
|
||||||
rdpClientContext* clientContext;
|
RDP_CLIENT_ENTRY_POINTS* pEntryPoints = instance->pClientEntryPoints;
|
||||||
RDP_CLIENT_ENTRY_POINTS* pEntryPoints;
|
|
||||||
|
|
||||||
clientContext = (rdpClientContext*) context;
|
|
||||||
pEntryPoints = instance->pClientEntryPoints;
|
|
||||||
|
|
||||||
PubSub_Free(clientContext->pubSub);
|
|
||||||
|
|
||||||
pEntryPoints->ClientFree(instance, context);
|
pEntryPoints->ClientFree(instance, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,9 +57,6 @@ rdpContext* freerdp_client_context_new(RDP_CLIENT_ENTRY_POINTS* pEntryPoints)
|
||||||
|
|
||||||
context = instance->context;
|
context = instance->context;
|
||||||
|
|
||||||
context->client->pEntryPoints = (RDP_CLIENT_ENTRY_POINTS*) malloc(pEntryPoints->Size);
|
|
||||||
CopyMemory(context->client->pEntryPoints, pEntryPoints, pEntryPoints->Size);
|
|
||||||
|
|
||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,14 +70,14 @@ void freerdp_client_context_free(rdpContext* context)
|
||||||
|
|
||||||
int freerdp_client_start(rdpContext* context)
|
int freerdp_client_start(rdpContext* context)
|
||||||
{
|
{
|
||||||
rdpClient* client = context->client;
|
RDP_CLIENT_ENTRY_POINTS* pEntryPoints = context->instance->pClientEntryPoints;
|
||||||
return client->pEntryPoints->ClientStart(context);
|
return pEntryPoints->ClientStart(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
int freerdp_client_stop(rdpContext* context)
|
int freerdp_client_stop(rdpContext* context)
|
||||||
{
|
{
|
||||||
rdpClient* client = context->client;
|
RDP_CLIENT_ENTRY_POINTS* pEntryPoints = context->instance->pClientEntryPoints;
|
||||||
return client->pEntryPoints->ClientStop(context);
|
return pEntryPoints->ClientStop(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
freerdp* freerdp_client_get_instance(rdpContext* context)
|
freerdp* freerdp_client_get_instance(rdpContext* context)
|
||||||
|
|
|
@ -63,35 +63,8 @@ typedef int (*pRdpClientEntry)(RDP_CLIENT_ENTRY_POINTS* pEntryPoints);
|
||||||
|
|
||||||
/* Common Client Interface */
|
/* Common Client Interface */
|
||||||
|
|
||||||
#define FREERDP_WINDOW_STATE_NORMAL 0
|
|
||||||
#define FREERDP_WINDOW_STATE_MINIMIZED 1
|
|
||||||
#define FREERDP_WINDOW_STATE_MAXIMIZED 2
|
|
||||||
#define FREERDP_WINDOW_STATE_FULLSCREEN 3
|
|
||||||
#define FREERDP_WINDOW_STATE_ACTIVE 4
|
|
||||||
|
|
||||||
typedef void (*pOnErrorInfo)(freerdp* instance, UINT32 code);
|
|
||||||
typedef void (*pOnParamChange)(freerdp* instance, int id);
|
|
||||||
|
|
||||||
DEFINE_EVENT_BEGIN(ResizeWindow)
|
|
||||||
int width;
|
|
||||||
int height;
|
|
||||||
DEFINE_EVENT_END(ResizeWindow)
|
|
||||||
|
|
||||||
DEFINE_EVENT_BEGIN(WindowStateChange)
|
|
||||||
int state;
|
|
||||||
DEFINE_EVENT_END(WindowStateChange)
|
|
||||||
|
|
||||||
struct rdp_client
|
|
||||||
{
|
|
||||||
RDP_CLIENT_ENTRY_POINTS* pEntryPoints;
|
|
||||||
|
|
||||||
pOnErrorInfo OnErrorInfo;
|
|
||||||
pOnParamChange OnParamChange;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define DEFINE_RDP_CLIENT_COMMON() \
|
#define DEFINE_RDP_CLIENT_COMMON() \
|
||||||
HANDLE thread; \
|
HANDLE thread
|
||||||
wPubSub* pubSub
|
|
||||||
|
|
||||||
struct rdp_client_context
|
struct rdp_client_context
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
/**
|
||||||
|
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||||
|
* Event Definitions
|
||||||
|
*
|
||||||
|
* Copyright 2013 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef FREERDP_EVENT_H
|
||||||
|
#define FREERDP_EVENT_H
|
||||||
|
|
||||||
|
#include <freerdp/api.h>
|
||||||
|
#include <freerdp/freerdp.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define FREERDP_WINDOW_STATE_NORMAL 0
|
||||||
|
#define FREERDP_WINDOW_STATE_MINIMIZED 1
|
||||||
|
#define FREERDP_WINDOW_STATE_MAXIMIZED 2
|
||||||
|
#define FREERDP_WINDOW_STATE_FULLSCREEN 3
|
||||||
|
#define FREERDP_WINDOW_STATE_ACTIVE 4
|
||||||
|
|
||||||
|
DEFINE_EVENT_BEGIN(WindowStateChange)
|
||||||
|
int state;
|
||||||
|
DEFINE_EVENT_END(WindowStateChange)
|
||||||
|
|
||||||
|
DEFINE_EVENT_BEGIN(ResizeWindow)
|
||||||
|
int width;
|
||||||
|
int height;
|
||||||
|
DEFINE_EVENT_END(ResizeWindow)
|
||||||
|
|
||||||
|
DEFINE_EVENT_BEGIN(ErrorInfo)
|
||||||
|
UINT32 code;
|
||||||
|
DEFINE_EVENT_END(ErrorInfo)
|
||||||
|
|
||||||
|
DEFINE_EVENT_BEGIN(ParamChange)
|
||||||
|
int id;
|
||||||
|
DEFINE_EVENT_END(ParamChange)
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* FREERDP_EVENT_H */
|
|
@ -26,7 +26,6 @@ typedef struct rdp_rail rdpRail;
|
||||||
typedef struct rdp_cache rdpCache;
|
typedef struct rdp_cache rdpCache;
|
||||||
typedef struct rdp_channels rdpChannels;
|
typedef struct rdp_channels rdpChannels;
|
||||||
typedef struct rdp_graphics rdpGraphics;
|
typedef struct rdp_graphics rdpGraphics;
|
||||||
typedef struct rdp_client rdpClient;
|
|
||||||
|
|
||||||
typedef struct rdp_freerdp freerdp;
|
typedef struct rdp_freerdp freerdp;
|
||||||
typedef struct rdp_context rdpContext;
|
typedef struct rdp_context rdpContext;
|
||||||
|
@ -39,6 +38,7 @@ typedef RDP_CLIENT_ENTRY_POINTS_V1 RDP_CLIENT_ENTRY_POINTS;
|
||||||
#include <freerdp/api.h>
|
#include <freerdp/api.h>
|
||||||
#include <freerdp/types.h>
|
#include <freerdp/types.h>
|
||||||
#include <freerdp/error.h>
|
#include <freerdp/error.h>
|
||||||
|
#include <freerdp/event.h>
|
||||||
#include <freerdp/settings.h>
|
#include <freerdp/settings.h>
|
||||||
#include <freerdp/extension.h>
|
#include <freerdp/extension.h>
|
||||||
|
|
||||||
|
@ -95,7 +95,9 @@ struct rdp_context
|
||||||
Used to keep this data available and used later on, typically just before connection initialization.
|
Used to keep this data available and used later on, typically just before connection initialization.
|
||||||
@see freerdp_parse_args() */
|
@see freerdp_parse_args() */
|
||||||
|
|
||||||
UINT64 paddingB[32 - 18]; /* 18 */
|
ALIGN64 wPubSub* pubSub; /* (offset 18) */
|
||||||
|
|
||||||
|
UINT64 paddingB[32 - 19]; /* 19 */
|
||||||
|
|
||||||
ALIGN64 rdpRdp* rdp; /**< (offset 32)
|
ALIGN64 rdpRdp* rdp; /**< (offset 32)
|
||||||
Pointer to a rdp_rdp structure used to keep the connection's parameters.
|
Pointer to a rdp_rdp structure used to keep the connection's parameters.
|
||||||
|
@ -112,8 +114,7 @@ struct rdp_context
|
||||||
ALIGN64 rdpInput* input; /* 38 */
|
ALIGN64 rdpInput* input; /* 38 */
|
||||||
ALIGN64 rdpUpdate* update; /* 39 */
|
ALIGN64 rdpUpdate* update; /* 39 */
|
||||||
ALIGN64 rdpSettings* settings; /* 40 */
|
ALIGN64 rdpSettings* settings; /* 40 */
|
||||||
ALIGN64 rdpClient* client; /* 41 */
|
UINT64 paddingC[64 - 41]; /* 41 */
|
||||||
UINT64 paddingC[64 - 42]; /* 42 */
|
|
||||||
|
|
||||||
UINT64 paddingD[96 - 64]; /* 64 */
|
UINT64 paddingD[96 - 64]; /* 64 */
|
||||||
UINT64 paddingE[128 - 96]; /* 96 */
|
UINT64 paddingE[128 - 96]; /* 96 */
|
||||||
|
@ -138,7 +139,7 @@ struct rdp_freerdp
|
||||||
Can be allocated by a call to freerdp_context_new().
|
Can be allocated by a call to freerdp_context_new().
|
||||||
Must be deallocated by a call to freerdp_context_free() before deallocating the current instance. */
|
Must be deallocated by a call to freerdp_context_free() before deallocating the current instance. */
|
||||||
|
|
||||||
RDP_CLIENT_ENTRY_POINTS* pClientEntryPoints;
|
ALIGN64 RDP_CLIENT_ENTRY_POINTS* pClientEntryPoints;
|
||||||
|
|
||||||
UINT64 paddingA[16 - 2]; /* 2 */
|
UINT64 paddingA[16 - 2]; /* 2 */
|
||||||
|
|
||||||
|
|
|
@ -744,6 +744,9 @@ BOOL freerdp_get_param_bool(rdpSettings* settings, int id)
|
||||||
|
|
||||||
int freerdp_set_param_bool(rdpSettings* settings, int id, BOOL param)
|
int freerdp_set_param_bool(rdpSettings* settings, int id, BOOL param)
|
||||||
{
|
{
|
||||||
|
ParamChangeEventArgs e;
|
||||||
|
rdpContext* context = ((freerdp*) settings->instance)->context;
|
||||||
|
|
||||||
switch (id)
|
switch (id)
|
||||||
{
|
{
|
||||||
case FreeRDP_ServerMode:
|
case FreeRDP_ServerMode:
|
||||||
|
@ -1185,7 +1188,9 @@ int freerdp_set_param_bool(rdpSettings* settings, int id, BOOL param)
|
||||||
|
|
||||||
// Mark field as modified
|
// Mark field as modified
|
||||||
settings->settings_modified[id] = 1;
|
settings->settings_modified[id] = 1;
|
||||||
IFCALL(((freerdp*) settings->instance)->context->client->OnParamChange, ((freerdp*) settings->instance), id);
|
|
||||||
|
e.id = id;
|
||||||
|
PubSub_OnEvent(context->pubSub, "ParamChange", context->instance, (wEventArgs*) &e);
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -1508,6 +1513,9 @@ UINT32 freerdp_get_param_uint32(rdpSettings* settings, int id)
|
||||||
|
|
||||||
int freerdp_set_param_uint32(rdpSettings* settings, int id, UINT32 param)
|
int freerdp_set_param_uint32(rdpSettings* settings, int id, UINT32 param)
|
||||||
{
|
{
|
||||||
|
ParamChangeEventArgs e;
|
||||||
|
rdpContext* context = ((freerdp*) settings->instance)->context;
|
||||||
|
|
||||||
switch (id)
|
switch (id)
|
||||||
{
|
{
|
||||||
case FreeRDP_ShareId:
|
case FreeRDP_ShareId:
|
||||||
|
@ -1821,7 +1829,9 @@ int freerdp_set_param_uint32(rdpSettings* settings, int id, UINT32 param)
|
||||||
|
|
||||||
// Mark field as modified
|
// Mark field as modified
|
||||||
settings->settings_modified[id] = 1;
|
settings->settings_modified[id] = 1;
|
||||||
IFCALL(((freerdp*) settings->instance)->context->client->OnParamChange, ((freerdp*) settings->instance), id);
|
|
||||||
|
e.id = id;
|
||||||
|
PubSub_OnEvent(context->pubSub, "ParamChange", context->instance, (wEventArgs*) &e);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1844,6 +1854,9 @@ UINT64 freerdp_get_param_uint64(rdpSettings* settings, int id)
|
||||||
|
|
||||||
int freerdp_set_param_uint64(rdpSettings* settings, int id, UINT64 param)
|
int freerdp_set_param_uint64(rdpSettings* settings, int id, UINT64 param)
|
||||||
{
|
{
|
||||||
|
ParamChangeEventArgs e;
|
||||||
|
rdpContext* context = ((freerdp*) settings->instance)->context;
|
||||||
|
|
||||||
switch (id)
|
switch (id)
|
||||||
{
|
{
|
||||||
case FreeRDP_ParentWindowId:
|
case FreeRDP_ParentWindowId:
|
||||||
|
@ -1857,7 +1870,9 @@ int freerdp_set_param_uint64(rdpSettings* settings, int id, UINT64 param)
|
||||||
|
|
||||||
// Mark field as modified
|
// Mark field as modified
|
||||||
settings->settings_modified[id] = 1;
|
settings->settings_modified[id] = 1;
|
||||||
IFCALL(((freerdp*) settings->instance)->context->client->OnParamChange, ((freerdp*) settings->instance), id);
|
|
||||||
|
e.id = id;
|
||||||
|
PubSub_OnEvent(context->pubSub, "ParamChange", context->instance, (wEventArgs*) &e);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -2028,6 +2043,9 @@ char* freerdp_get_param_string(rdpSettings* settings, int id)
|
||||||
|
|
||||||
int freerdp_set_param_string(rdpSettings* settings, int id, char* param)
|
int freerdp_set_param_string(rdpSettings* settings, int id, char* param)
|
||||||
{
|
{
|
||||||
|
ParamChangeEventArgs e;
|
||||||
|
rdpContext* context = ((freerdp*) settings->instance)->context;
|
||||||
|
|
||||||
switch (id)
|
switch (id)
|
||||||
{
|
{
|
||||||
case FreeRDP_ServerHostname:
|
case FreeRDP_ServerHostname:
|
||||||
|
@ -2189,7 +2207,9 @@ int freerdp_set_param_string(rdpSettings* settings, int id, char* param)
|
||||||
|
|
||||||
// Mark field as modified
|
// Mark field as modified
|
||||||
settings->settings_modified[id] = 1;
|
settings->settings_modified[id] = 1;
|
||||||
IFCALL(((freerdp*) settings->instance)->context->client->OnParamChange, ((freerdp*) settings->instance), id);
|
|
||||||
|
e.id = id;
|
||||||
|
PubSub_OnEvent(context->pubSub, "ParamChange", context->instance, (wEventArgs*) &e);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -308,6 +308,14 @@ void freerdp_get_version(int* major, int* minor, int* revision)
|
||||||
*revision = FREERDP_VERSION_REVISION;
|
*revision = FREERDP_VERSION_REVISION;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static wEvent FreeRDP_Events[] =
|
||||||
|
{
|
||||||
|
DEFINE_EVENT_ENTRY(WindowStateChange)
|
||||||
|
DEFINE_EVENT_ENTRY(ResizeWindow)
|
||||||
|
DEFINE_EVENT_ENTRY(ErrorInfo)
|
||||||
|
DEFINE_EVENT_ENTRY(ParamChange)
|
||||||
|
};
|
||||||
|
|
||||||
/** Allocator function for a rdp context.
|
/** Allocator function for a rdp context.
|
||||||
* The function will allocate a rdpRdp structure using rdp_new(), then copy
|
* The function will allocate a rdpRdp structure using rdp_new(), then copy
|
||||||
* its contents to the appropriate fields in the rdp_freerdp structure given in parameters.
|
* its contents to the appropriate fields in the rdp_freerdp structure given in parameters.
|
||||||
|
@ -339,8 +347,8 @@ int freerdp_context_new(freerdp* instance)
|
||||||
context->update = instance->update;
|
context->update = instance->update;
|
||||||
context->settings = instance->settings;
|
context->settings = instance->settings;
|
||||||
|
|
||||||
context->client = (rdpClient*) malloc(sizeof(rdpClient));
|
context->pubSub = PubSub_New(TRUE);
|
||||||
ZeroMemory(context->client, sizeof(rdpClient));
|
PubSub_Publish(context->pubSub, FreeRDP_Events, sizeof(FreeRDP_Events) / sizeof(wEvent));
|
||||||
|
|
||||||
instance->update->context = instance->context;
|
instance->update->context = instance->context;
|
||||||
instance->update->pointer->context = instance->context;
|
instance->update->pointer->context = instance->context;
|
||||||
|
@ -375,11 +383,7 @@ void freerdp_context_free(freerdp* instance)
|
||||||
rdp_free(instance->context->rdp);
|
rdp_free(instance->context->rdp);
|
||||||
graphics_free(instance->context->graphics);
|
graphics_free(instance->context->graphics);
|
||||||
|
|
||||||
if (instance->context->client)
|
PubSub_Free(instance->context->pubSub);
|
||||||
{
|
|
||||||
free(instance->context->client->pEntryPoints);
|
|
||||||
free(instance->context->client);
|
|
||||||
}
|
|
||||||
|
|
||||||
free(instance->context);
|
free(instance->context);
|
||||||
instance->context = NULL;
|
instance->context = NULL;
|
||||||
|
|
|
@ -502,11 +502,13 @@ BOOL rdp_recv_set_error_info_data_pdu(rdpRdp* rdp, wStream* s)
|
||||||
|
|
||||||
if (rdp->errorInfo != ERRINFO_SUCCESS)
|
if (rdp->errorInfo != ERRINFO_SUCCESS)
|
||||||
{
|
{
|
||||||
rdpClient* client = rdp->instance->context->client;
|
ErrorInfoEventArgs e;
|
||||||
|
rdpContext* context = rdp->instance->context;
|
||||||
|
|
||||||
rdp_print_errinfo(rdp->errorInfo);
|
rdp_print_errinfo(rdp->errorInfo);
|
||||||
|
|
||||||
IFCALL(client->OnErrorInfo, rdp->instance, rdp->errorInfo);
|
e.code = rdp->errorInfo;
|
||||||
|
PubSub_OnEvent(context->pubSub, "ErrorInfo", context, (wEventArgs*) &e);
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
Loading…
Reference in New Issue