summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--test/encodingstest.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/test/encodingstest.c b/test/encodingstest.c
index c2f8135..bef30a8 100644
--- a/test/encodingstest.c
+++ b/test/encodingstest.c
@@ -78,8 +78,6 @@ static void updateStatistics(int encodingIndex,rfbBool failed) {
UNLOCK(statisticsMutex);
}
-
-
/* Here begin the functions for the client. They will be called in a
* pthread. */
@@ -99,7 +97,7 @@ static rfbBool doFramebuffersMatch(rfbScreenInfo* server,rfbClient* client,
for(k=0;k<3/*server->serverFormat.bitsPerPixel/8*/;k++) {
unsigned char s=server->frameBuffer[k+i*4+j*server->paddedWidthInBytes];
unsigned char cl=client->frameBuffer[k+i*4+j*client->width*4];
-
+
if(maxDelta==0 && s!=cl) {
UNLOCK(frameBufferMutex);
return FALSE;
@@ -133,7 +131,7 @@ typedef struct clientData {
static void update(rfbClient* client,int x,int y,int w,int h) {
clientData* cd=(clientData*)client->clientData;
int maxDelta=0;
-
+
#ifndef VERY_VERBOSE
static const char* progress="|/-\\";
static int counter=0;
@@ -159,7 +157,7 @@ static void update(rfbClient* client,int x,int y,int w,int h) {
if(testEncodings[cd->encodingIndex].id==rfbEncodingTight)
maxDelta=5;
#endif
-
+
updateStatistics(cd->encodingIndex,
!doFramebuffersMatch(cd->server,client,maxDelta));
}
@@ -169,7 +167,7 @@ static void* clientLoop(void* data) {
clientData* cd=(clientData*)client->clientData;
client->appData.encodingsString=strdup(testEncodings[cd->encodingIndex].str);
-
+
sleep(1);
rfbClientLog("Starting client (encoding %s, display %s)\n",
testEncodings[cd->encodingIndex].str,
@@ -193,11 +191,13 @@ static void* clientLoop(void* data) {
return NULL;
}
+static pthread_t all_threads[NUMBER_OF_ENCODINGS_TO_TEST];
+static int thread_counter;
+
static void startClient(int encodingIndex,rfbScreenInfo* server) {
rfbClient* client=rfbGetClient(8,3,4);
clientData* cd;
- pthread_t clientThread;
-
+
client->clientData=malloc(sizeof(clientData));
client->MallocFrameBuffer=resize;
client->GotFrameBufferUpdate=update;
@@ -212,7 +212,7 @@ static void startClient(int encodingIndex,rfbScreenInfo* server) {
lastUpdateRect.x2=server->width;
lastUpdateRect.y2=server->height;
- pthread_create(&clientThread,NULL,clientLoop,(void*)client);
+ pthread_create(&all_threads[thread_counter++],NULL,clientLoop,(void*)client);
}
/* Here begin the server functions */
@@ -288,7 +288,7 @@ rfbTestLog(const char *format, ...)
/* the main function */
int main(int argc,char** argv)
-{
+{
int i,j;
time_t t;
rfbScreenInfoPtr server;
@@ -336,8 +336,10 @@ int main(int argc,char** argv)
}
#endif
- free(server->frameBuffer);
rfbScreenCleanup(server);
+ for(i=0;i<thread_counter;i++)
+ pthread_join(all_threads[i], NULL);
+ free(server->frameBuffer);
rfbLog("Statistics:\n");
for(i=0;i<NUMBER_OF_ENCODINGS_TO_TEST;i++)