int npages;
RgbImage *page0_rgbimage;
-char *ocean, *pirate;
+const char *ocean, *pirate;
static XWindowAttributes attr;
static Window id;
assert(sm->rshift < LONG_BIT);
}
-static void rtimestamp(double *t) {
+static void rtimestamp(double *t, const char *wh) {
double n= timestamp();
- debugf("PAGING INTERVAL %f\n", n-*t);
+ debugf("PAGING INTERVAL %f %s\n", n-*t, wh);
*t= n;
}
double begin= timestamp();
if (shmim) {
- im_use= shmim;
xassert( XShmGetImage(disp,id,shmim, 0,0, AllPlanes) );
+ rtimestamp(&begin, "XShmGetImage");
+
+ size_t dsz= shmim->bytes_per_line * shmim->height;
+ im_use= im_free= mmalloc(sizeof(*im_use) + dsz);
+ *im_free= *shmim;
+ im_free->data= (void*)(im_free+1);
+ memcpy(im_free->data, shmim->data, dsz);
+ rtimestamp(&begin, "mmalloc/memcpy");
} else {
xassert( im_use= im_free=
XGetImage(disp,id, 0,0, wwidth,wheight, AllPlanes, ZPixmap) );
+ rtimestamp(&begin, "XGetImage");
}
- rtimestamp(&begin);
#define COMPUTE_SHIFT_MASK(ix, rgb) \
compute_shift_mask(&shiftmasks[ix], im_use->rgb##_mask)
if (!*output)
*output= alloc_rgb_image(wwidth, wheight);
- rtimestamp(&begin);
+ rtimestamp(&begin, "compute_shift_masks+alloc_rgb_image");
int x,y,i;
unsigned char *op= (*output)->data;
- for (y=0; y<wwidth; y++) {
- for (x=0; x<wheight; x++) {
+ for (y=0; y<wheight; y++) {
+ for (x=0; x<wwidth; x++) {
long xrgb= XGetPixel(im_use,x,y);
for (i=0; i<3; i++) {
unsigned long sample=
}
}
- rtimestamp(&begin);
+ rtimestamp(&begin,"w*h*XGetPixel");
if (im_free)
XDestroyImage(im_free);
- rtimestamp(&begin);
+ rtimestamp(&begin,"XDestroyImage");
check_not_disturbed();
debugf("PAGING snapshot done.\n");
check_client_window_all_on_screen();
int shm= XShmQueryExtension(disp);
- // shm=0;
+ shm=0;
if (shm) {
xassert( shmim= XShmCreateImage(disp, attr.visual, attr.depth, ZPixmap,
0,&shminfo, wwidth,wheight) );
REQUIRE( !memcmp(title + len - S(suffix), suffix, S(suffix)) );
REQUIRE( !memcmp(spc1, onthe, S(onthe)) );
-#define ASSIGN(what, start, end) do { \
- sysassert( asprintf(&what, "%.*s", (end)-(start), start) >0 ); \
- }while(0)
- ASSIGN(pirate, title + S(prefix), spc1);
+#define ASSIGN(what, start, end) \
+ what= masprintf("%.*s", (end)-(start), start); \
+ if (o_##what) REQUIRE( !strcmp(o_##what, what) ); \
+ else
+
ASSIGN(ocean, spc1 + S(onthe), (title + len) - S(suffix));
+ ASSIGN(pirate, title + S(prefix), spc1);
debugfind(" YES!\n");
id= w2;
if (children1) XFree(children1);
}
if (nfound>1)
- fatal("Found several YPP clients."
+ fatal("Found several possible YPP clients."
" Close one, or specify the windowid with --window-id.\n");
if (nfound<1)
- fatal("Did not find YPP client."
- " Use --window-id and/or report this as a fault.\n");
+ fatal("Did not find %sYPP client."
+ " Use --window-id and/or report this as a fault.\n",
+ o_ocean || o_pirate ? "matching ": "");
}