Ignore:
Timestamp:
Mar 8, 2006, 8:41:53 PM (14 years ago)
Author:
Sam Hocevar
Message:
  • Fixed async issues between the driver and libcaca when resizing windows, and simplified the handle_resize() API. Still can be polished.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/caca/driver_x11.c

    r551 r553  
    5050    long int event_mask;
    5151    int font_width, font_height;
    52     unsigned int new_width, new_height;
    5352    int colors[16];
    5453    Font font;
     
    207206                                            DefaultScreen(kk->drv.p->dpy)));
    208207
    209     kk->drv.p->new_width = kk->drv.p->new_height = 0;
    210 
    211208    return 0;
    212209}
     
    311308}
    312309
    313 static void x11_handle_resize(caca_t *kk, unsigned int *new_width,
    314                                           unsigned int *new_height)
     310static void x11_handle_resize(caca_t *kk)
    315311{
    316312    Pixmap new_pixmap;
    317313
    318     *new_width = kk->drv.p->new_width;
    319     *new_height = kk->drv.p->new_height;
    320 
    321314    new_pixmap = XCreatePixmap(kk->drv.p->dpy, kk->drv.p->window,
    322                                kk->qq->width * kk->drv.p->font_width,
    323                                kk->qq->height * kk->drv.p->font_height,
     315                               kk->resize.w * kk->drv.p->font_width,
     316                               kk->resize.h * kk->drv.p->font_height,
    324317                               DefaultDepth(kk->drv.p->dpy,
    325318                                            DefaultScreen(kk->drv.p->dpy)));
    326     XCopyArea(kk->drv.p->dpy, kk->drv.p->pixmap, new_pixmap, kk->drv.p->gc, 0, 0,
    327               kk->qq->width * kk->drv.p->font_width,
    328               kk->qq->height * kk->drv.p->font_height, 0, 0);
     319    XCopyArea(kk->drv.p->dpy, kk->drv.p->pixmap, new_pixmap,
     320              kk->drv.p->gc, 0, 0,
     321              kk->resize.w * kk->drv.p->font_width,
     322              kk->resize.h * kk->drv.p->font_height, 0, 0);
    329323    XFreePixmap(kk->drv.p->dpy, kk->drv.p->pixmap);
    330324    kk->drv.p->pixmap = new_pixmap;
     
    365359                continue;
    366360
    367             kk->drv.p->new_width = w;
    368             kk->drv.p->new_height = h;
    369 
    370             /* If we are already resizing, ignore the new signal */
    371             if(kk->resize)
    372                 continue;
    373 
    374             kk->resize = 1;
    375 
    376             return CACA_EVENT_RESIZE;
     361            kk->resize.w = w;
     362            kk->resize.h = h;
     363            kk->resize.resized = 1;
     364
     365            continue;
    377366        }
    378367
Note: See TracChangeset for help on using the changeset viewer.