From efad9d6d0b164bd37c84a9581dbf6397c7ffb3fa Mon Sep 17 00:00:00 2001 From: Michael Gernoth Date: Sun, 13 Jan 2008 16:23:06 +0100 Subject: [PATCH] only swap bytes in mini map when needed --- src/sim/g_smmaps.c | 8 ++++---- src/sim/headers/view.h | 2 +- src/sim/w_x.c | 7 ++++++- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/sim/g_smmaps.c b/src/sim/g_smmaps.c index b29199b..4ca499a 100644 --- a/src/sim/g_smmaps.c +++ b/src/sim/g_smmaps.c @@ -141,10 +141,10 @@ int DynamicData[32]; #define BE_ROW3_24 BE_ROW1_24(0) BE_ROW1_24(1) BE_ROW1_24(2) #define BE_ROW3_32 BE_ROW1_32(0) BE_ROW1_32(1) BE_ROW1_32(2) -#define ROW3_8 if (view->x->big_endian) { BE_ROW3_8 } else { LE_ROW3_8 } -#define ROW3_16 if (view->x->big_endian) { BE_ROW3_16 } else { LE_ROW3_16 } -#define ROW3_24 if (view->x->big_endian) { BE_ROW3_24 } else { LE_ROW3_24 } -#define ROW3_32 if (view->x->big_endian) { BE_ROW3_32 } else { LE_ROW3_32 } +#define ROW3_8 if (view->x->needs_swap) { BE_ROW3_8 } else { LE_ROW3_8 } +#define ROW3_16 if (view->x->needs_swap) { BE_ROW3_16 } else { LE_ROW3_16 } +#define ROW3_24 if (view->x->needs_swap) { BE_ROW3_24 } else { LE_ROW3_24 } +#define ROW3_32 if (view->x->needs_swap) { BE_ROW3_32 } else { LE_ROW3_32 } #define ROW3 \ switch (view->x->depth) { \ diff --git a/src/sim/headers/view.h b/src/sim/headers/view.h index aabdafe..8f87fe0 100644 --- a/src/sim/headers/view.h +++ b/src/sim/headers/view.h @@ -113,7 +113,7 @@ typedef struct XDisplay { Pixmap vert_stipple; Pixmap horiz_stipple; Pixmap diag_stipple; - int big_endian; + int needs_swap; } XDisplay; diff --git a/src/sim/w_x.c b/src/sim/w_x.c index 76e9ff6..513072e 100644 --- a/src/sim/w_x.c +++ b/src/sim/w_x.c @@ -490,6 +490,7 @@ SimView * InitNewView(SimView *view, char *title, int class, int w, int h) { int type, i; + int test = 1; int d = 8; unsigned long valuemask = 0; char *t; @@ -584,7 +585,11 @@ InitNewView(SimView *view, char *title, int class, int w, int h) view->type = X_Mem_View; } - view->x->big_endian = (ImageByteOrder(view->x->dpy) == MSBFirst); + if ((ImageByteOrder(view->x->dpy) == MSBFirst) == !(*(unsigned char*) (&test))) + view->x->needs_swap = 0; + else + view->x->needs_swap = 1; + GetPixmaps(view->x); view->pixels = view->x->pixels; -- 2.39.5