… | |
… | |
27 | #define DO_TIMING_TEST 0 |
27 | #define DO_TIMING_TEST 0 |
28 | |
28 | |
29 | #if DO_TIMING_TEST |
29 | #if DO_TIMING_TEST |
30 | # include <sys/time.h> |
30 | # include <sys/time.h> |
31 | #define TIMING_TEST_START(id) \ |
31 | #define TIMING_TEST_START(id) \ |
32 | struct timeval timing_test_##id##_stv;\ |
32 | struct timeval timing_test_##id##_stv;\ |
33 | gettimeofday (&timing_test_##id##_stv, NULL); |
33 | gettimeofday (&timing_test_##id##_stv, NULL); |
34 | |
34 | |
35 | #define TIMING_TEST_PRINT_RESULT(id) \ |
35 | #define TIMING_TEST_PRINT_RESULT(id) \ |
36 | do{ struct timeval tv;gettimeofday (&tv, NULL); tv.tv_sec -= (timing_test_##id##_stv).tv_sec;\ |
36 | do{ struct timeval tv;gettimeofday (&tv, NULL); tv.tv_sec -= (timing_test_##id##_stv).tv_sec;\ |
37 | fprintf (stderr, "%s: %s: %d: elapsed %ld usec\n", #id, __FILE__, __LINE__,\ |
37 | fprintf (stderr, "%s: %s: %d: elapsed %ld usec\n", #id, __FILE__, __LINE__,\ |
… | |
… | |
848 | unsigned long result = 0; |
848 | unsigned long result = 0; |
849 | |
849 | |
850 | if (target == NULL) |
850 | if (target == NULL) |
851 | return 0; |
851 | return 0; |
852 | |
852 | |
853 | /* root dimentions may change from call to call - but Display structure should |
853 | /* root dimensions may change from call to call - but Display structure should |
854 | * be always up-to-date, so let's use it : |
854 | * be always up-to-date, so let's use it : |
855 | */ |
855 | */ |
856 | Window root = target->display->root; |
856 | Window root = target->display->root; |
857 | int screen = target->display->screen; |
857 | int screen = target->display->screen; |
858 | Display *dpy = target->dpy; |
858 | Display *dpy = target->dpy; |
… | |
… | |
947 | else |
947 | else |
948 | result |= transpPmapTiled; |
948 | result |= transpPmapTiled; |
949 | } |
949 | } |
950 | else |
950 | else |
951 | { |
951 | { |
952 | /* strightforward pixmap copy */ |
952 | /* straightforward pixmap copy */ |
953 | gcv.tile = root_pixmap; |
953 | gcv.tile = root_pixmap; |
954 | gcv.fill_style = FillTiled; |
954 | gcv.fill_style = FillTiled; |
955 | |
955 | |
956 | while (sx < 0) sx += (int)root_width; |
956 | while (sx < 0) sx += (int)root_width; |
957 | while (sy < 0) sy += (int)root_height; |
957 | while (sy < 0) sy += (int)root_height; |
… | |
… | |
1186 | else if (background_flags && pmap_depth != target->depth) |
1186 | else if (background_flags && pmap_depth != target->depth) |
1187 | result = XGetImage (target->dpy, pixmap, 0, 0, pmap_width, pmap_height, AllPlanes, ZPixmap); |
1187 | result = XGetImage (target->dpy, pixmap, 0, 0, pmap_width, pmap_height, AllPlanes, ZPixmap); |
1188 | |
1188 | |
1189 | # elif !XFT /* our own client-side tinting */ |
1189 | # elif !XFT /* our own client-side tinting */ |
1190 | |
1190 | |
1191 | /* ATTENTION: We ASSUME that XFT will let us do all the tinting neccessary server-side. |
1191 | /* ATTENTION: We ASSUME that XFT will let us do all the tinting necessary server-side. |
1192 | This may need to be changed in need_client_side_rendering() logic is altered !!! */ |
1192 | This may need to be changed in need_client_side_rendering() logic is altered !!! */ |
1193 | |
1193 | |
1194 | if (background_flags && (flags & isInvalid)) |
1194 | if (background_flags && (flags & isInvalid)) |
1195 | { |
1195 | { |
1196 | result = XGetImage (target->dpy, pixmap, 0, 0, pmap_width, pmap_height, AllPlanes, ZPixmap); |
1196 | result = XGetImage (target->dpy, pixmap, 0, 0, pmap_width, pmap_height, AllPlanes, ZPixmap); |