2
Copyright (C) 2002-2010 Karl J. Runge <runge@karlrunge.com>
5
This file is part of x11vnc.
7
x11vnc is free software; you can redistribute it and/or modify
8
it under the terms of the GNU General Public License as published by
9
the Free Software Foundation; either version 2 of the License, or (at
10
your option) any later version.
12
x11vnc is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
GNU General Public License for more details.
17
You should have received a copy of the GNU General Public License
18
along with x11vnc; if not, write to the Free Software
19
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA
20
or see <http://www.gnu.org/licenses/>.
22
In addition, as a special exception, Karl J. Runge
23
gives permission to link the code of its release of x11vnc with the
24
OpenSSL project's "OpenSSL" library (or with modified versions of it
25
that use the same license as the "OpenSSL" library), and distribute
26
the linked executables. You must obey the GNU General Public License
27
in all respects for all of the code used other than "OpenSSL". If you
28
modify this file, you may extend this exception to your version of the
29
file, but you are not obligated to do so. If you do not wish to do
30
so, delete this exception statement from your version.
421
455
if (OUCH && ouch_db) fprintf(stderr, "***OUCH-A\n");
422
456
if (OUCH) continue;
458
if (use_threads) LOCK(cl->updateMutex);
424
460
if (sraRgnCountRects(cl->modifiedRegion)) {
426
462
if (OUCH && ouch_db) fprintf(stderr, "***OUCH-B\n");
463
if (use_threads) UNLOCK(cl->updateMutex);
427
464
if (OUCH) continue;
467
if (use_threads) UNLOCK(cl->updateMutex);
430
469
defer = screen->deferUpdateTime;
431
470
httpdir = screen->httpDir;
432
471
screen->deferUpdateTime = 0;
452
491
if (OUCH && ouch_db) fprintf(stderr, "***OUCH-C1\n");
494
if (use_threads) LOCK(cl->updateMutex);
455
496
req0 = sraRgnCountRects(cl->requestedRegion);
456
497
mod0 = sraRgnCountRects(cl->modifiedRegion);
499
if (use_threads) UNLOCK(cl->updateMutex);
457
501
if (use_threads) {
472
516
if (OUCH && ouch_db) fprintf(stderr, "***OUCH-C2\n");
519
if (use_threads) LOCK(cl->updateMutex);
475
521
req1 = sraRgnCountRects(cl->requestedRegion);
476
522
mod1 = sraRgnCountRects(cl->modifiedRegion);
524
if (use_threads) UNLOCK(cl->updateMutex);
478
526
if (db) fprintf(stderr, "dt2 calc: num rects req: %d/%d mod: %d/%d "
479
527
"fbu-sent: %d dt: %.4f dt2: %.4f tm: %.4f\n",
480
528
req0, req1, mod0, mod1,
482
530
cl->framebufferUpdateMessagesSent,
532
#if LIBVNCSERVER_HAS_STATS
484
533
rfbStatGetMessageCountSent(cl, rfbFramebufferUpdate),
487
537
if (req1 != 0 && mod1 == 0) {
523
573
int req0, req1, mod0, mod1;
525
req0 = sraRgnCountRects(
526
cl->requestedRegion);
527
mod0 = sraRgnCountRects(
575
if (use_threads) LOCK(cl->updateMutex);
577
req0 = sraRgnCountRects(cl->requestedRegion);
578
mod0 = sraRgnCountRects(cl->modifiedRegion);
580
if (use_threads) UNLOCK(cl->updateMutex);
546
598
if (dt3 > spin_lat_max) {
549
req1 = sraRgnCountRects(
550
cl->requestedRegion);
552
mod1 = sraRgnCountRects(
602
if (use_threads) LOCK(cl->updateMutex);
604
req1 = sraRgnCountRects(cl->requestedRegion);
605
mod1 = sraRgnCountRects(cl->modifiedRegion);
607
if (use_threads) UNLOCK(cl->updateMutex);
555
609
if (db) fprintf(stderr, "dt3 calc: num rects req: %d/%d mod: %d/%d "
556
610
"fbu-sent: %d dt: %.4f dt3: %.4f tm: %.4f\n",
559
613
cl->framebufferUpdateMessagesSent,
615
#if LIBVNCSERVER_HAS_STATS
561
616
rfbStatGetMessageCountSent(cl, rfbFramebufferUpdate),
565
621
if (req1 != 0 && mod1 == 0) {