- timestamp();
- *output= XGetImage(disp,id, 0,0, wwidth,wheight, AllPlanes, ZPixmap);
- timestamp();
+ double begin= timestamp();
+ if (shmim) {
+ rtimestamp(&begin, "XShmGetImage before");
+ 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 {
+ rtimestamp(&begin, "XGetImage before");
+ xassert( im_use= im_free=
+ XGetImage(disp,id, 0,0, wwidth,wheight, AllPlanes, ZPixmap) );
+ rtimestamp(&begin, "XGetImage");
+ }