#include "pf_common.h"
#include "pf_client.h"
#include "pf_context.h"
+#include "pf_update.h"
#include "pf_log.h"
#define TAG PROXY_TAG("client")
client->update->DesktopResize(client);
}
-/**
- * This function is called whenever a new frame starts.
- * It can be used to reset invalidated areas.
- */
-static BOOL pf_client_begin_paint(rdpContext* context)
-{
- pClientContext* pc = (pClientContext*) context;
- proxyData* pdata = pc->pdata;
- rdpContext* ps = (rdpContext*)pdata->ps;
- return ps->update->BeginPaint(ps);
-}
-
-/**
- * This function is called when the library completed composing a new
- * frame. Read out the changed areas and blit them to your output device.
- * The image buffer will have the format specified by gdi_init
- */
-static BOOL pf_client_end_paint(rdpContext* context)
-{
- pClientContext* pc = (pClientContext*) context;
- proxyData* pdata = pc->pdata;
- rdpContext* ps = (rdpContext*)pdata->ps;
- return ps->update->EndPaint(ps);
-}
-
static void pf_OnErrorInfo(void* ctx, ErrorInfoEventArgs* e)
{
pClientContext* pc = (pClientContext*) ctx;
return TRUE;
}
-
-static BOOL pf_client_bitmap_update(rdpContext* context, const BITMAP_UPDATE* bitmap)
-{
- pClientContext* pc = (pClientContext*) context;
- proxyData* pdata = pc->pdata;
- rdpContext* ps = (rdpContext*)pdata->ps;
- return ps->update->BitmapUpdate(ps, bitmap);
-}
-
-static BOOL pf_client_desktop_resize(rdpContext* context)
-{
- pClientContext* pc = (pClientContext*) context;
- proxyData* pdata = pc->pdata;
- rdpContext* ps = (rdpContext*)pdata->ps;
- return ps->update->DesktopResize(ps);
-}
-
/**
* Called after a RDP connection was successfully established.
* Settings might have changed during negociation of client / server feature
}
pf_gdi_register_update_callbacks(update);
- brush_cache_register_callbacks(instance->update);
- glyph_cache_register_callbacks(instance->update);
- bitmap_cache_register_callbacks(instance->update);
- offscreen_cache_register_callbacks(instance->update);
- palette_cache_register_callbacks(instance->update);
+ brush_cache_register_callbacks(update);
+ glyph_cache_register_callbacks(update);
+ bitmap_cache_register_callbacks(update);
+ offscreen_cache_register_callbacks(update);
+ palette_cache_register_callbacks(update);
}
-
- update->BeginPaint = pf_client_begin_paint;
- update->EndPaint = pf_client_end_paint;
- update->BitmapUpdate = pf_client_bitmap_update;
- update->DesktopResize = pf_client_desktop_resize;
+
+ pf_client_register_update_callbacks(update);
ps = (rdpContext*) pc->pdata->ps;
proxy_server_reactivate(ps, context);
return TRUE;
#include "pf_update.h"
#include "pf_context.h"
+/* server callbacks */
+
static BOOL pf_server_refresh_rect(rdpContext* context, BYTE count,
const RECTANGLE_16* areas)
{
return pc->update->SuppressOutput(pc, allow, area);
}
+/* client callbacks */
+
+/**
+ * This function is called whenever a new frame starts.
+ * It can be used to reset invalidated areas.
+ */
+static BOOL pf_client_begin_paint(rdpContext* context)
+{
+ pClientContext* pc = (pClientContext*) context;
+ proxyData* pdata = pc->pdata;
+ rdpContext* ps = (rdpContext*)pdata->ps;
+ return ps->update->BeginPaint(ps);
+}
+
+/**
+ * This function is called when the library completed composing a new
+ * frame. Read out the changed areas and blit them to your output device.
+ * The image buffer will have the format specified by gdi_init
+ */
+static BOOL pf_client_end_paint(rdpContext* context)
+{
+ pClientContext* pc = (pClientContext*) context;
+ proxyData* pdata = pc->pdata;
+ rdpContext* ps = (rdpContext*)pdata->ps;
+ return ps->update->EndPaint(ps);
+}
+
+static BOOL pf_client_bitmap_update(rdpContext* context, const BITMAP_UPDATE* bitmap)
+{
+ pClientContext* pc = (pClientContext*) context;
+ proxyData* pdata = pc->pdata;
+ rdpContext* ps = (rdpContext*)pdata->ps;
+ return ps->update->BitmapUpdate(ps, bitmap);
+}
+
+static BOOL pf_client_desktop_resize(rdpContext* context)
+{
+ pClientContext* pc = (pClientContext*) context;
+ proxyData* pdata = pc->pdata;
+ rdpContext* ps = (rdpContext*)pdata->ps;
+ return ps->update->DesktopResize(ps);
+}
+
+static BOOL pf_client_send_pointer_system(rdpContext* context,
+ const POINTER_SYSTEM_UPDATE* pointer_system)
+{
+ pClientContext* pc = (pClientContext*) context;
+ proxyData* pdata = pc->pdata;
+ rdpContext* ps = (rdpContext*)pdata->ps;
+ return ps->update->pointer->PointerSystem(ps, pointer_system);
+}
+
+static BOOL pf_client_send_pointer_position(rdpContext* context,
+ const POINTER_POSITION_UPDATE* pointerPosition)
+{
+ pClientContext* pc = (pClientContext*) context;
+ proxyData* pdata = pc->pdata;
+ rdpContext* ps = (rdpContext*)pdata->ps;
+ return ps->update->pointer->PointerPosition(ps, pointerPosition);
+}
+
+static BOOL pf_client_send_pointer_color(rdpContext* context,
+ const POINTER_COLOR_UPDATE* pointer_color)
+{
+ pClientContext* pc = (pClientContext*) context;
+ proxyData* pdata = pc->pdata;
+ rdpContext* ps = (rdpContext*)pdata->ps;
+ return ps->update->pointer->PointerColor(ps, pointer_color);
+}
+
+static BOOL pf_client_send_pointer_new(rdpContext* context,
+ const POINTER_NEW_UPDATE* pointer_new)
+{
+ pClientContext* pc = (pClientContext*) context;
+ proxyData* pdata = pc->pdata;
+ rdpContext* ps = (rdpContext*)pdata->ps;
+ return ps->update->pointer->PointerNew(ps, pointer_new);
+}
+
+static BOOL pf_client_send_pointer_cached(rdpContext* context,
+ const POINTER_CACHED_UPDATE* pointer_cached)
+{
+ pClientContext* pc = (pClientContext*) context;
+ proxyData* pdata = pc->pdata;
+ rdpContext* ps = (rdpContext*)pdata->ps;
+ return ps->update->pointer->PointerCached(ps, pointer_cached);
+}
+
+void pf_client_register_update_callbacks(rdpUpdate* update)
+{
+ update->BeginPaint = pf_client_begin_paint;
+ update->EndPaint = pf_client_end_paint;
+ update->BitmapUpdate = pf_client_bitmap_update;
+ update->DesktopResize = pf_client_desktop_resize;
+
+ update->pointer->PointerSystem = pf_client_send_pointer_system;
+ update->pointer->PointerPosition = pf_client_send_pointer_position;
+ update->pointer->PointerColor = pf_client_send_pointer_color;
+ update->pointer->PointerNew = pf_client_send_pointer_new;
+ update->pointer->PointerCached = pf_client_send_pointer_cached;
+}
+
void pf_server_register_update_callbacks(rdpUpdate* update)
{
update->RefreshRect = pf_server_refresh_rect;