File LibVNCServer-update-testsuite.patch of Package LibVNCServer.27291
diff -urp a/test/copyrecttest.c b/test/copyrecttest.c
--- a/test/copyrecttest.c 2014-10-21 17:57:11.000000000 +0200
+++ b/test/copyrecttest.c 2020-06-13 20:49:53.000000000 +0200
@@ -2,6 +2,7 @@
#define _BSD_SOURCE
#endif
#include <rfb/rfb.h>
+#define _USE_MATH_DEFINES
#include <math.h>
static void initBackground(rfbScreenInfoPtr server)
diff -urp a/test/encodingstest.c b/test/encodingstest.c
--- a/test/encodingstest.c 2014-10-21 17:57:11.000000000 +0200
+++ b/test/encodingstest.c 2020-06-13 20:49:53.000000000 +0200
@@ -6,8 +6,8 @@
#include <rfb/rfb.h>
#include <rfb/rfbclient.h>
-#ifndef LIBVNCSERVER_HAVE_LIBPTHREAD
-#error This test need pthread support (otherwise the client blocks the client)
+#if !defined(LIBVNCSERVER_HAVE_LIBPTHREAD) && !defined(LIBVNCSERVER_HAVE_WIN32THREADS)
+#error "I need pthreads or win32 threads for that."
#endif
#define ALL_AT_ONCE
@@ -66,7 +66,7 @@ static void updateStatistics(int encodin
}
/* Here begin the functions for the client. They will be called in a
- * pthread. */
+ * thread. */
/* maxDelta=0 means they are expected to match exactly;
* maxDelta>0 means that the average difference must be lower than maxDelta */
@@ -148,14 +148,14 @@ static void update_finished(rfbClient* c
}
-static void* clientLoop(void* data) {
+static THREAD_ROUTINE_RETURN_TYPE clientLoop(void* data) {
rfbClient* client=(rfbClient*)data;
clientData* cd=(clientData*)client->clientData;
client->appData.encodingsString=strdup(testEncodings[cd->encodingIndex].str);
client->appData.qualityLevel = 7; /* ZYWRLE fails the test with standard settings */
- sleep(1);
+ THREAD_SLEEP_MS(1000);
rfbClientLog("Starting client (encoding %s, display %s)\n",
testEncodings[cd->encodingIndex].str,
cd->display);
@@ -163,7 +163,7 @@ static void* clientLoop(void* data) {
rfbClientErr("Had problems starting client (encoding %s)\n",
testEncodings[cd->encodingIndex].str);
updateStatistics(cd->encodingIndex,TRUE);
- return NULL;
+ return THREAD_ROUTINE_RETURN_VALUE;
}
while(1) {
if(WaitForMessage(client,50)>=0)
@@ -176,10 +176,14 @@ static void* clientLoop(void* data) {
if(client->frameBuffer)
free(client->frameBuffer);
rfbClientCleanup(client);
- return NULL;
+ return THREAD_ROUTINE_RETURN_VALUE;
}
+#if defined(LIBVNCSERVER_HAVE_LIBPTHREAD)
static pthread_t all_threads[NUMBER_OF_ENCODINGS_TO_TEST];
+#elif defined(LIBVNCSERVER_HAVE_WIN32THREADS)
+static uintptr_t all_threads[NUMBER_OF_ENCODINGS_TO_TEST];
+#endif
static int thread_counter;
static void startClient(int encodingIndex,rfbScreenInfo* server) {
@@ -187,6 +191,7 @@ static void startClient(int encodingInde
clientData* cd;
client->clientData=malloc(sizeof(clientData));
+ if (!client->clientData) return;
client->MallocFrameBuffer=resize;
client->GotFrameBufferUpdate=update;
client->FinishedFrameBufferUpdate=update_finished;
@@ -195,9 +200,18 @@ static void startClient(int encodingInde
cd->encodingIndex=encodingIndex;
cd->server=server;
cd->display=(char*)malloc(6);
+ if (!cd->display) {
+ free(client->clientData);
+ return;
+ }
sprintf(cd->display,":%d",server->port-5900);
+#if defined(LIBVNCSERVER_HAVE_LIBPTHREAD)
pthread_create(&all_threads[thread_counter++],NULL,clientLoop,(void*)client);
+#elif defined(LIBVNCSERVER_HAVE_WIN32THREADS)
+ all_threads[thread_counter++] = _beginthread(clientLoop, 0, client);
+#endif
+
}
/* Here begin the server functions */
@@ -279,15 +293,19 @@ int main(int argc,char** argv)
/* Initialize server */
server=rfbGetScreen(&argc,argv,width,height,8,3,4);
if(!server)
- return 0;
+ return 1;
server->frameBuffer=malloc(400*300*4);
+ if (!server->frameBuffer)
+ return 1;
+
server->cursor=NULL;
for(j=0;j<400*300*4;j++)
server->frameBuffer[j]=j;
rfbInitServer(server);
rfbProcessEvents(server,0);
+ INIT_MUTEX(frameBufferMutex);
initStatistics();
#ifndef ALL_AT_ONCE
@@ -322,7 +340,7 @@ int main(int argc,char** argv)
rfbShutdownServer(server, TRUE);
for(i=0;i<thread_counter;i++)
- pthread_join(all_threads[i], NULL);
+ THREAD_JOIN(all_threads[i]);
free(server->frameBuffer);
rfbScreenCleanup(server);
diff -urp a/test/tjbench.c b/test/tjbench.c
--- a/test/tjbench.c 2014-10-21 17:57:11.000000000 +0200
+++ b/test/tjbench.c 2020-06-13 20:49:53.000000000 +0200
@@ -178,7 +178,8 @@ int decomptest(unsigned char *srcbuf, un
int y=(int)((double)srcbuf[rindex]*0.299
+ (double)srcbuf[gindex]*0.587
+ (double)srcbuf[bindex]*0.114 + 0.5);
- if(y>255) y=255; if(y<0) y=0;
+ if(y>255) y=255;
+ if(y<0) y=0;
dstbuf[rindex]=abs(dstbuf[rindex]-y);
dstbuf[gindex]=abs(dstbuf[gindex]-y);
dstbuf[bindex]=abs(dstbuf[bindex]-y);
@@ -226,7 +227,8 @@ void dotest(unsigned char *srcbuf, int w
for(tilew=dotile? 8:w, tileh=dotile? 8:h; ; tilew*=2, tileh*=2)
{
- if(tilew>w) tilew=w; if(tileh>h) tileh=h;
+ if(tilew>w) tilew=w;
+ if(tileh>h) tileh=h;
ntilesw=(w+tilew-1)/tilew; ntilesh=(h+tileh-1)/tileh;
if((jpegbuf=(unsigned char **)malloc(sizeof(unsigned char *)
@@ -323,7 +325,7 @@ void dotest(unsigned char *srcbuf, int w
for(i=0; i<ntilesw*ntilesh; i++)
{
- if(jpegbuf[i]) free(jpegbuf[i]); jpegbuf[i]=NULL;
+ if(jpegbuf[i]) {free(jpegbuf[i]); jpegbuf[i]=NULL;}
}
free(jpegbuf); jpegbuf=NULL;
free(jpegsize); jpegsize=NULL;
@@ -337,7 +339,7 @@ void dotest(unsigned char *srcbuf, int w
{
for(i=0; i<ntilesw*ntilesh; i++)
{
- if(jpegbuf[i]) free(jpegbuf[i]); jpegbuf[i]=NULL;
+ if(jpegbuf[i]) {free(jpegbuf[i]); jpegbuf[i]=NULL;}
}
free(jpegbuf); jpegbuf=NULL;
}
@@ -392,7 +394,8 @@ void dodecomptest(char *filename)
for(tilew=dotile? 16:w, tileh=dotile? 16:h; ; tilew*=2, tileh*=2)
{
- if(tilew>w) tilew=w; if(tileh>h) tileh=h;
+ if(tilew>w) tilew=w;
+ if(tileh>h) tileh=h;
ntilesw=(w+tilew-1)/tilew; ntilesh=(h+tileh-1)/tileh;
if((jpegbuf=(unsigned char **)malloc(sizeof(unsigned char *)
@@ -455,7 +458,7 @@ void dodecomptest(char *filename)
{
for(i=0; i<ntilesw*ntilesh; i++)
{
- if(jpegbuf[i]) free(jpegbuf[i]); jpegbuf[i]=NULL;
+ if(jpegbuf[i]) {free(jpegbuf[i]); jpegbuf[i]=NULL;}
}
free(jpegbuf); jpegbuf=NULL;
}
@@ -507,7 +510,7 @@ void usage(char *progname)
int main(int argc, char *argv[])
{
- unsigned char *srcbuf=NULL; int w, h, i, j;
+ unsigned char *srcbuf=NULL; int w = 0, h = 0, i, j;
int minqual=-1, maxqual=-1; char *temp;
int minarg=2; int retval=0;
@@ -599,7 +602,7 @@ int main(int argc, char *argv[])
}
else usage(argv[0]);
}
- if(!strcasecmp(argv[i], "-benchtime") && i<argc-1)
+ if(i<argc-1 && !strcasecmp(argv[i], "-benchtime"))
{
double temp=atof(argv[++i]);
if(temp>0.0) benchtime=temp;
diff -urp a/test/tjutil.h b/test/tjutil.h
--- a/test/tjutil.h 2014-10-21 17:57:11.000000000 +0200
+++ b/test/tjutil.h 2020-06-13 20:49:53.000000000 +0200
@@ -31,9 +31,9 @@
#include <stdio.h>
#define snprintf(str, n, format, ...) \
_snprintf_s(str, n, _TRUNCATE, format, __VA_ARGS__)
+ #define strcasecmp stricmp
+ #define strncasecmp strnicmp
#endif
- #define strcasecmp stricmp
- #define strncasecmp strnicmp
#endif
#ifndef min