if(wf_info_have_updates(wfInfoSingleton))\r
{\r
wf_info_find_invalid_region(wfInfoSingleton);\r
- printf("Fake Encode!\n");\r
+ //printf("Fake Encode!\n");\r
+ wf_rfx_encode(client);\r
}
- }
-
-
- /*
- dRes = WaitForSingleObject(\r
- wfInfoSingleton->mutex, // handle to mutex\r
- INFINITE); // no time-out interval\r
- switch(dRes)\r
- {\r
- case WAIT_OBJECT_0:\r
- if(wfInfoSingleton->subscribers > 0)\r
- {\r
- wfInfoSingleton->nextUpdate = buf->buffer->counter; ///////////////////////////// \r
- //_tprintf(_T("Count = %lu\n"), wfInfoSingleton->nextUpdate);\r
-\r
-\r
- //todo: modulus\r
- //need to go through the "queue"\r
- for(i = wfInfoSingleton->lastUpdate; i <= wfInfoSingleton->nextUpdate; ++i)\r
- {\r
- wfInfoSingleton->invalid_x1 = min(wfInfoSingleton->invalid_x1, buf->buffer->pointrect[i].rect.left);\r
- wfInfoSingleton->invalid_x2 = max(wfInfoSingleton->invalid_x2, buf->buffer->pointrect[i].rect.right);\r
- wfInfoSingleton->invalid_y1 = min(wfInfoSingleton->invalid_y1, buf->buffer->pointrect[i].rect.top);\r
- wfInfoSingleton->invalid_y2 = max(wfInfoSingleton->invalid_y2, buf->buffer->pointrect[i].rect.bottom);\r
- }///////////////////////////////\r
-\r
- wf_rfx_encode(client);\r
- }\r
-\r
- if (! ReleaseMutex(wfInfoSingleton->mutex)) \r
- { \r
- _tprintf(_T("Error releasing mutex\n"));\r
- } \r
-\r
- break;\r
-\r
- default:\r
- _tprintf(_T("Error waiting for mutex: %d\n"), dRes);\r
}\r
- */\r
\r
end = GetTickCount();\r
diff = end - start;
Sleep(rate - diff);
}\r
\r
-\r
- //Sleep(42);\r
- //freerdp_usleep(41667);\r
- \r
}\r
\r
_tprintf(_T("monitor thread terminating...\n"));\r
SURFACE_BITS_COMMAND* cmd;\r
GETCHANGESBUF* buf;\r
long height, width;\r
+ int dRes;\r
\r
update = client->update;\r
wfp = (wfPeerContext*) client->context;\r
if( (wfp->activated == false) )//|| ( (wfi->nextUpdate - wfi->lastUpdate) == 0) )\r
return;\r
\r
- /*\r
- printf("encode %d\n", wfi->nextUpdate - wfi->lastUpdate);\r
- printf("\tinvlaid region = (%d, %d), (%d, %d)\n", wfi->invalid_x1, wfi->invalid_y1, wfi->invalid_x2, wfi->invalid_y2);
+ if ( (wfi->invalid_x1 >= wfi->invalid_x2) || (wfi->invalid_y1 >= wfi->invalid_y2) )\r
+ return;\r
+\r
+ dRes = WaitForSingleObject(wfInfoSingleton->encodeMutex, INFINITE);\r
+ switch(dRes)\r
+ {\r
+ case WAIT_OBJECT_0:\r
+\r
+ printf("encode %d\n", wfi->nextUpdate - wfi->lastUpdate);\r
+ printf("\tinvlaid region = (%d, %d), (%d, %d)\n", wfi->invalid_x1, wfi->invalid_y1, wfi->invalid_x2, wfi->invalid_y2);
\r
- */\r
\r
- wfi->lastUpdate = wfi->nextUpdate;
- if ( (wfi->invalid_x1 >= wfi->invalid_x2) ||\r
- (wfi->invalid_y1 >= wfi->invalid_y2) )\r
- return;\r
+ wfi->lastUpdate = wfi->nextUpdate;\r
\r
- width = wfi->invalid_x2 - wfi->invalid_x1;\r
- height = wfi->invalid_y2 - wfi->invalid_y1;\r
+ width = wfi->invalid_x2 - wfi->invalid_x1;\r
+ height = wfi->invalid_y2 - wfi->invalid_y1;\r
\r
- stream_clear(wfp->s);\r
- stream_set_pos(wfp->s, 0);\r
- s = wfp->s;\r
+ stream_clear(wfp->s);\r
+ stream_set_pos(wfp->s, 0);\r
+ s = wfp->s;\r
\r
- rect.x = wfi->invalid_x1;\r
- rect.y = wfi->invalid_y1;\r
- rect.width = width;\r
- rect.height = width;\r
+ rect.x = wfi->invalid_x1;\r
+ rect.y = wfi->invalid_y1;\r
+ rect.width = width;\r
+ rect.height = width;\r
\r
\r
- rfx_compose_message(wfp->rfx_context, s, &rect, 1,\r
- (uint8*) buf->Userbuffer, width, height, width * 4);\r
+ rfx_compose_message(wfp->rfx_context, s, &rect, 1,\r
+ (uint8*) buf->Userbuffer, width, height, width * 4);\r
\r
- cmd->destLeft = wfi->invalid_x1;\r
- cmd->destTop = wfi->invalid_y1;\r
- cmd->destRight = wfi->invalid_x1 + width;\r
- cmd->destBottom = wfi->invalid_y1 + height;\r
+ cmd->destLeft = wfi->invalid_x1;\r
+ cmd->destTop = wfi->invalid_y1;\r
+ cmd->destRight = wfi->invalid_x1 + width;\r
+ cmd->destBottom = wfi->invalid_y1 + height;\r
\r
\r
- cmd->bpp = 32;\r
- cmd->codecID = client->settings->rfx_codec_id;\r
- cmd->width = width;\r
- cmd->height = height;\r
- cmd->bitmapDataLength = stream_get_length(s);\r
- cmd->bitmapData = stream_get_head(s);\r
+ cmd->bpp = 32;\r
+ cmd->codecID = client->settings->rfx_codec_id;\r
+ cmd->width = width;\r
+ cmd->height = height;\r
+ cmd->bitmapDataLength = stream_get_length(s);\r
+ cmd->bitmapData = stream_get_head(s);\r
+ break;\r
+\r
+ default: \r
+ printf("\n\nSomething else happened!!! dRes = %d\n", dRes);\r
+ }\r
\r
}\r
\r
\r
}\r
\r
-void wf_peer_send_changes()\r
+void wf_peer_send_changes(rdpUpdate* update)\r
{\r
int dRes;\r
\r
\r
wf_info_updated(wfInfoSingleton);\r
printf("\tSend...\n");\r
+ update->SurfaceBits(update->context, &update->surface_bits_command);\r
\r
break;\r
\r