Browse Source

min and max changed to vncmin and vncmax. This solves many problems: Some platforms predefines or redefines these symbols. Some platforms have header files which chokes if min or max are defined.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@96 3789f03b-4d11-0410-bbf8-ca57d06f2519
tags/v0.0.90
Peter Åstrand 19 years ago
parent
commit
0f49e22bdc
15 changed files with 49 additions and 65 deletions
  1. 7
    0
      Xregion/Region.c
  2. 0
    8
      Xregion/Xregion.h
  3. 5
    6
      rdr/FdInStream.cxx
  4. 4
    4
      rfb/ComparingUpdateTracker.cxx
  5. 9
    15
      rfb/Rect.h
  6. 2
    2
      rfb/hextileDecode.h
  7. 2
    2
      rfb/hextileEncode.h
  8. 7
    15
      rfb/util.h
  9. 2
    2
      rfb/zrleDecode.h
  10. 2
    2
      rfb/zrleEncode.h
  11. 2
    2
      tx/TXButton.h
  12. 2
    2
      tx/TXCheckbox.h
  13. 1
    1
      tx/TXEntry.h
  14. 2
    2
      tx/TXImage.cxx
  15. 2
    2
      tx/TXLabel.h

+ 7
- 0
Xregion/Region.c View File

@@ -78,6 +78,13 @@ SOFTWARE.
#include "region.h"
//#include "poly.h"

#ifndef min
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
#ifndef max
#define max(a,b) (((a) > (b)) ? (a) : (b))
#endif

#ifdef DEBUG
#include <stdio.h>
#define assert(expr) {if (!(expr)) fprintf(stderr,\

+ 0
- 8
Xregion/Xregion.h View File

@@ -61,14 +61,6 @@ SOFTWARE.
#define Xfree free
#define Xrealloc realloc

#ifndef max
#define max(a,b) (((a) > (b)) ? (a) : (b))
#endif

#ifndef min
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif

#define NeedFunctionPrototypes 1

// - Cribbed from Xlib.h

+ 5
- 6
rdr/FdInStream.cxx View File

@@ -36,12 +36,11 @@
#include <sys/time.h>
#endif

#ifndef min
#define min(a,b) (((a) < (b)) ? (a) : (b))
#ifndef vncmin
#define vncmin(a,b) (((a) < (b)) ? (a) : (b))
#endif

#ifndef max
#define max(a,b) (((a) > (b)) ? (a) : (b))
#ifndef vncmax
#define vncmax(a,b) (((a) > (b)) ? (a) : (b))
#endif

// XXX should use autoconf HAVE_SYS_SELECT_H
@@ -146,7 +145,7 @@ int FdInStream::overrun(int itemSize, int nItems, bool wait)
// during timing=1 can be satisfied without calling
// readWithTimeoutOrCallback. However, reading only 1 or 2 bytes
// bytes is ineffecient.
bytes_to_read = min(bytes_to_read, max(itemSize*nItems, 8));
bytes_to_read = vncmin(bytes_to_read, vncmax(itemSize*nItems, 8));
}
int n = readWithTimeoutOrCallback((U8*)end, bytes_to_read, wait);
if (n == 0) return 0;

+ 4
- 4
rfb/ComparingUpdateTracker.cxx View File

@@ -60,7 +60,7 @@ void ComparingUpdateTracker::compare()
// since in effect the entire framebuffer has changed.
oldFb.setSize(fb->width(), fb->height());
for (int y=0; y<fb->height(); y+=BLOCK_SIZE) {
Rect pos(0, y, fb->width(), min(fb->height(), y+BLOCK_SIZE));
Rect pos(0, y, fb->width(), vncmin(fb->height(), y+BLOCK_SIZE));
int srcStride;
const rdr::U8* srcData = fb->getPixelsR(pos, &srcStride);
oldFb.imageRect(pos, srcData, srcStride);
@@ -100,20 +100,20 @@ void ComparingUpdateTracker::compareRect(const Rect& r, Region* newChanged)
for (int blockTop = r.tl.y; blockTop < r.br.y; blockTop += BLOCK_SIZE)
{
// Get a strip of the source buffer
Rect pos(r.tl.x, blockTop, r.br.x, min(r.br.y, blockTop+BLOCK_SIZE));
Rect pos(r.tl.x, blockTop, r.br.x, vncmin(r.br.y, blockTop+BLOCK_SIZE));
int fbStride;
const rdr::U8* newBlockPtr = fb->getPixelsR(pos, &fbStride);
int newStrideBytes = fbStride * bytesPerPixel;

rdr::U8* oldBlockPtr = oldData;
int blockBottom = min(blockTop+BLOCK_SIZE, r.br.y);
int blockBottom = vncmin(blockTop+BLOCK_SIZE, r.br.y);

for (int blockLeft = r.tl.x; blockLeft < r.br.x; blockLeft += BLOCK_SIZE)
{
const rdr::U8* newPtr = newBlockPtr;
rdr::U8* oldPtr = oldBlockPtr;

int blockRight = min(blockLeft+BLOCK_SIZE, r.br.x);
int blockRight = vncmin(blockLeft+BLOCK_SIZE, r.br.x);
int blockWidthInBytes = (blockRight-blockLeft) * bytesPerPixel;

for (int y = blockTop; y < blockBottom; y++)

+ 9
- 15
rfb/Rect.h View File

@@ -21,13 +21,7 @@
#ifndef __RFB_RECT_INCLUDED__
#define __RFB_RECT_INCLUDED__

#ifndef max
#define max(a,b) (((a) > (b)) ? (a) : (b))
#endif

#ifndef min
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
#include <rfb/util.h>

namespace rfb {

@@ -70,20 +64,20 @@ namespace rfb {
}
inline Rect intersect(const Rect &r) const {
Rect result;
result.tl.x = max(tl.x, r.tl.x);
result.tl.y = max(tl.y, r.tl.y);
result.br.x = max(min(br.x, r.br.x), result.tl.x);
result.br.y = max(min(br.y, r.br.y), result.tl.y);
result.tl.x = vncmax(tl.x, r.tl.x);
result.tl.y = vncmax(tl.y, r.tl.y);
result.br.x = vncmax(vncmin(br.x, r.br.x), result.tl.x);
result.br.y = vncmax(vncmin(br.y, r.br.y), result.tl.y);
return result;
}
inline Rect union_boundary(const Rect &r) const {
if (r.is_empty()) return *this;
if (is_empty()) return r;
Rect result;
result.tl.x = min(tl.x, r.tl.x);
result.tl.y = min(tl.y, r.tl.y);
result.br.x = max(br.x, r.br.x);
result.br.y = max(br.y, r.br.y);
result.tl.x = vncmin(tl.x, r.tl.x);
result.tl.y = vncmin(tl.y, r.tl.y);
result.br.x = vncmax(br.x, r.br.x);
result.br.y = vncmax(br.y, r.br.y);
return result;
}
inline Rect translate(const Point &p) const {

+ 2
- 2
rfb/hextileDecode.h View File

@@ -52,11 +52,11 @@ void HEXTILE_DECODE (const Rect& r, rdr::InStream* is, PIXEL_T* buf

for (t.tl.y = r.tl.y; t.tl.y < r.br.y; t.tl.y += 16) {

t.br.y = min(r.br.y, t.tl.y + 16);
t.br.y = vncmin(r.br.y, t.tl.y + 16);

for (t.tl.x = r.tl.x; t.tl.x < r.br.x; t.tl.x += 16) {

t.br.x = min(r.br.x, t.tl.x + 16);
t.br.x = vncmin(r.br.x, t.tl.x + 16);

int tileType = is->readU8();


+ 2
- 2
rfb/hextileEncode.h View File

@@ -60,11 +60,11 @@ void HEXTILE_ENCODE(const Rect& r, rdr::OutStream* os

for (t.tl.y = r.tl.y; t.tl.y < r.br.y; t.tl.y += 16) {

t.br.y = min(r.br.y, t.tl.y + 16);
t.br.y = vncmin(r.br.y, t.tl.y + 16);

for (t.tl.x = r.tl.x; t.tl.x < r.br.x; t.tl.x += 16) {

t.br.x = min(r.br.x, t.tl.x + 16);
t.br.x = vncmin(r.br.x, t.tl.x + 16);

GET_IMAGE_INTO_BUF(t,buf);


+ 7
- 15
rfb/util.h View File

@@ -23,6 +23,13 @@
#ifndef __RFB_UTIL_H__
#define __RFB_UTIL_H__

#ifndef vncmin
#define vncmin(a,b) (((a) < (b)) ? (a) : (b))
#endif
#ifndef vncmax
#define vncmax(a,b) (((a) > (b)) ? (a) : (b))
#endif

#include <string.h>

namespace rfb {
@@ -67,21 +74,6 @@ namespace rfb {
}
#endif

// Some platforms (e.g. Windows) include max() and min() macros in their
// standard headers, so we define them only when not already defined. Note
// also that max() & min() are standard C++ template functions, so some C++
// headers will undefine them. We place our definitions outside the #ifndef
// __RFB_UTIL_H__, so that you can always guarantee they will be defined if
// this file is the last #include before you use them.

#ifndef max
#define max(a,b) (((a) > (b)) ? (a) : (b))
#endif

#ifndef min
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif


// -=- PLATFORM SPECIFIC UTILITY FUNCTIONS/IMPLEMENTATIONS
#ifdef WIN32

+ 2
- 2
rfb/zrleDecode.h View File

@@ -61,11 +61,11 @@ void ZRLE_DECODE (const Rect& r, rdr::InStream* is,

for (t.tl.y = r.tl.y; t.tl.y < r.br.y; t.tl.y += 64) {

t.br.y = min(r.br.y, t.tl.y + 64);
t.br.y = vncmin(r.br.y, t.tl.y + 64);

for (t.tl.x = r.tl.x; t.tl.x < r.br.x; t.tl.x += 64) {

t.br.x = min(r.br.x, t.tl.x + 64);
t.br.x = vncmin(r.br.x, t.tl.x + 64);

int mode = zis->readU8();
bool rle = mode & 128;

+ 2
- 2
rfb/zrleEncode.h View File

@@ -130,7 +130,7 @@ bool ZRLE_ENCODE (const Rect& r, rdr::OutStream* os,

for (t.tl.y = r.tl.y; t.tl.y < r.br.y; t.tl.y += 64) {

t.br.y = min(r.br.y, t.tl.y + 64);
t.br.y = vncmin(r.br.y, t.tl.y + 64);

if (os->length() + worstCaseLine > maxLen) {
if (t.tl.y == r.tl.y)
@@ -143,7 +143,7 @@ bool ZRLE_ENCODE (const Rect& r, rdr::OutStream* os,

for (t.tl.x = r.tl.x; t.tl.x < r.br.x; t.tl.x += 64) {

t.br.x = min(r.br.x, t.tl.x + 64);
t.br.x = vncmin(r.br.x, t.tl.x + 64);

GET_IMAGE_INTO_BUF(t,buf);


+ 2
- 2
tx/TXButton.h View File

@@ -62,8 +62,8 @@ public:
text.buf = rfb::strDup(text_);
int textWidth = XTextWidth(defaultFS, text.buf, strlen(text.buf));
int textHeight = (defaultFS->ascent + defaultFS->descent);
int newWidth = max(width(), textWidth + xPad*2 + bevel*2);
int newHeight = max(height(), textHeight + yPad*2 + bevel*2);
int newWidth = vncmax(width(), textWidth + xPad*2 + bevel*2);
int newHeight = vncmax(height(), textHeight + yPad*2 + bevel*2);
if (width() < newWidth || height() < newHeight) {
resize(newWidth, newHeight);
}

+ 2
- 2
tx/TXCheckbox.h View File

@@ -71,8 +71,8 @@ public:
text = strdup(text_);
int textWidth = XTextWidth(defaultFS, text, strlen(text));
int textHeight = (defaultFS->ascent + defaultFS->descent);
int newWidth = max(width(), textWidth + xPad*2 + boxPad*2 + boxSize);
int newHeight = max(height(), textHeight + yPad*2);
int newWidth = vncmax(width(), textWidth + xPad*2 + boxPad*2 + boxSize);
int newHeight = vncmax(height(), textHeight + yPad*2);
if (width() < newWidth || height() < newHeight) {
resize(newWidth, newHeight);
}

+ 1
- 1
tx/TXEntry.h View File

@@ -58,7 +58,7 @@ public:
| ButtonPressMask);
text[0] = 0;
int textHeight = (defaultFS->ascent + defaultFS->descent);
int newHeight = max(height(), textHeight + yPad*2 + bevel*2);
int newHeight = vncmax(height(), textHeight + yPad*2 + bevel*2);
if (height() < newHeight) {
resize(width(), newHeight);
}

+ 2
- 2
tx/TXImage.cxx View File

@@ -71,8 +71,8 @@ void TXImage::resize(int w, int h)
if (w == width() && h == height()) return;

int oldStrideBytes = getStride() * (format.bpp/8);
int rowsToCopy = min(h, height());
int bytesPerRow = min(w, width()) * (format.bpp/8);
int rowsToCopy = vncmin(h, height());
int bytesPerRow = vncmin(w, width()) * (format.bpp/8);
rdr::U8* oldData = 0;
bool allocData = false;


+ 2
- 2
tx/TXLabel.h View File

@@ -64,8 +64,8 @@ public:
int textHeight = ((defaultFS->ascent + defaultFS->descent + lineSpacing)
* lines);

int newWidth = max(width(), textWidth + xPad*2);
int newHeight = max(height(), textHeight + yPad*2);
int newWidth = vncmax(width(), textWidth + xPad*2);
int newHeight = vncmax(height(), textHeight + yPad*2);
if (width() < newWidth || height() < newHeight) {
resize(newWidth, newHeight);
}

Loading…
Cancel
Save