- if(fl->buffer != None)
- XFreePixmap(MI_DISPLAY(mi), fl->buffer);
- fl->buffer = XCreatePixmap(MI_DISPLAY(mi), MI_WINDOW(mi),
- MI_WIDTH(mi), MI_HEIGHT(mi), MI_DEPTH(mi));
- if (fl->buffer == None) {
- free_fiberlamp(MI_DISPLAY(mi), fl);
- return;
+#ifdef HAVE_COCOA /* Don't second-guess Quartz's double-buffering */
+ fl->dbufp = False;
+#else
+ fl->dbufp = True;
+#endif
+
+ if(fl->buffer != None && fl->buffer != MI_WINDOW(mi) && fl->dbufp)
+ XFreePixmap(MI_DISPLAY(mi), fl->buffer);
+
+ if(fl->dbufp) {
+ fl->buffer = XCreatePixmap(MI_DISPLAY(mi), MI_WINDOW(mi),
+ MI_WIDTH(mi), MI_HEIGHT(mi), MI_DEPTH(mi));
+ if (fl->buffer == None) {
+ free_fiberlamp(mi, fl);
+ return;
+ }
+ } else {
+ fl->buffer = MI_WINDOW(mi);