From 4bb04764b341616556623a1f8f90db0a346c201e Mon Sep 17 00:00:00 2001 From: Michael Jennings Date: Tue, 2 May 2000 23:46:08 +0000 Subject: [PATCH] Tue May 2 16:56:47 PDT 2000 Michael Jennings After getting sick of hearing people whining about the obscure error messages that resulted from trying to build without pixmap support, I hacked it until it at least built without it. I also added warnings to configure.in so that people would know if that happened. It's still not very happy running that way, which is something I need to fix. But hopefully it will stop the whining. Yeah, right. =P SVN revision: 2590 --- ChangeLog | 13 +++++++++++++ configure.in | 10 ++++++++++ src/buttons.c | 2 ++ src/events.c | 25 ++++++++++++++----------- src/options.c | 45 +++++++++++++++++++++++++++++++-------------- src/pixmap.c | 8 +++++--- src/pixmap.h | 39 +++++++++++++++++++++++++++------------ src/profile.h | 2 +- src/screen.c | 31 ++++++++++++++++++------------- src/screen.h | 4 ++++ src/scrollbar.c | 2 ++ src/startup.c | 2 ++ src/term.c | 6 ++++++ utils/Esetroot.c | 8 +++++++- 14 files changed, 142 insertions(+), 55 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7089925..c7d1f61 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3530,3 +3530,16 @@ Thu Apr 27 19:54:28 PDT 2000 Michael Jennings people without shared library dependencies working. ------------------------------------------------------------------------------- +Tue May 2 16:56:47 PDT 2000 Michael Jennings + + After getting sick of hearing people whining about the obscure error + messages that resulted from trying to build without pixmap support, I + hacked it until it at least built without it. I also added warnings + to configure.in so that people would know if that happened. + + It's still not very happy running that way, which is something I need + to fix. But hopefully it will stop the whining. + + Yeah, right. =P + +------------------------------------------------------------------------------- diff --git a/configure.in b/configure.in index e7054f6..929b392 100644 --- a/configure.in +++ b/configure.in @@ -287,6 +287,10 @@ AC_ARG_WITH(imlib, AC_MSG_RESULT(no) GRLIBS="" USE_IMLIB=0 + AC_WARN(*** Pixmap support has been disabled at your request. This ***) + AC_WARN(*** is generally a bad idea since it really doesn't save ***) + AC_WARN(*** much memory. And the developers almost never test that ***) + AC_WARN(*** configuration. So I'd reconsider if I were you.... ***) fi, AC_MSG_RESULT(yes) USE_IMLIB=1 ) @@ -299,6 +303,10 @@ if test $USE_IMLIB -eq 1 ; then AC_DEFINE(PIXMAP_SUPPORT) AC_DEFINE(BACKING_STORE) , + AC_WARN(*** Pixmap support has been disabled because Imlib2 was not found ***) + AC_WARN(*** or could not be linked. Eterm should still work, but it will ***) + AC_WARN(*** not be very happy. Check config.log for more detailed ***) + AC_WARN(*** information on why my attempt to link with Imlib2 failed. ***) , $SUBLIBS $X_LIBS $GRLIBS) fi @@ -722,6 +730,8 @@ if test -z "$GRLIBS"; then mv doc/Makefile.new doc/Makefile fi +test $USE_IMLIB = 0 && GRLIBS="*** WARNING: Pixmap support disabled! ***" + echo " $PACKAGE $VERSION Configuration: diff --git a/src/buttons.c b/src/buttons.c index 28655a7..8982d40 100644 --- a/src/buttons.c +++ b/src/buttons.c @@ -373,6 +373,7 @@ button_calc_size(buttonbar_t *bbar, button_t *button) button->h += bord->top + bord->bottom; } } +#ifdef PIXMAP_SUPPORT if (button->icon) { unsigned short b = 0; @@ -393,6 +394,7 @@ button_calc_size(buttonbar_t *bbar, button_t *button) } D_BBAR((" -> Final icon dimensions are %hux%hu\n", button->icon_w, button->icon_h)); } +#endif D_BBAR((" -> Set button to %dx%d at %d, %d and icon to %dx%d\n", button->w, button->h, button->x, button->y, button->icon_w, button->icon_h)); } diff --git a/src/events.c b/src/events.c index 0770ecb..bb6625d 100644 --- a/src/events.c +++ b/src/events.c @@ -160,9 +160,11 @@ event_init_primary_dispatcher(void) event_data_add_mywin(&primary_data, TermWin.parent); event_data_add_mywin(&primary_data, TermWin.vt); +#ifdef PIXMAP_SUPPORT if (desktop_window != None) { event_data_add_parent(&primary_data, desktop_window); } +#endif } unsigned char @@ -227,6 +229,7 @@ handle_property_notify(event_t * ev) D_EVENTS(("handle_property_notify(ev [%8p] on window 0x%08x)\n", ev, ev->xany.window)); +#ifdef PIXMAP_OFFSET if (background_is_trans()) { if ((ev->xany.window == TermWin.parent) || (ev->xany.window == Xroot)) { prop = XInternAtom(Xdisplay, "_WIN_WORKSPACE", True); @@ -267,12 +270,15 @@ handle_property_notify(event_t * ev) } } } +#endif if ((ev->xany.window == Xroot) && (image_mode_any(MODE_AUTO))) { prop = XInternAtom(Xdisplay, "ENLIGHTENMENT_COMMS", True); D_EVENTS(("On the root window. prop (ENLIGHTENMENT_COMMS) == 0x%08x, ev->xproperty.atom == 0x%08x\n", (int) prop, (int) ev->xproperty.atom)); if ((prop != None) && (ev->xproperty.atom == prop)) { if ((enl_ipc_get_win()) != None) { +#ifdef PIXMAP_SUPPORT redraw_images_by_mode(MODE_AUTO); +#endif } } } @@ -554,13 +560,15 @@ handle_expose(event_t * ev) D_EVENTS(("handle_expose(ev [%8p] on window 0x%08x)\n", ev, ev->xany.window)); REQUIRE_RVAL(XEVENT_IS_MYWIN(ev, &primary_data), 0); - if (ev->xany.window == TermWin.vt) { - if (buffer_pixmap == None) { - if (refresh_type == NO_REFRESH) { - refresh_type = FAST_REFRESH; - } - scr_expose(ev->xexpose.x, ev->xexpose.y, ev->xexpose.width, ev->xexpose.height); + if (ev->xany.window == TermWin.vt +#ifdef PIXMAP_SUPPORT + && buffer_pixmap == None +#endif + ) { + if (refresh_type == NO_REFRESH) { + refresh_type = FAST_REFRESH; } + scr_expose(ev->xexpose.x, ev->xexpose.y, ev->xexpose.width, ev->xexpose.height); } else { XEvent unused_xevent; @@ -568,11 +576,6 @@ handle_expose(event_t * ev) while (XCheckTypedWindowEvent(Xdisplay, ev->xany.window, Expose, &unused_xevent)); while (XCheckTypedWindowEvent(Xdisplay, ev->xany.window, GraphicsExpose, &unused_xevent)); } -#if 0 - if (desktop_window != None) { - XSelectInput(Xdisplay, desktop_window, PropertyChangeMask); - } -#endif PROF_DONE(handle_expose); PROF_TIME(handle_expose); return 1; diff --git a/src/options.c b/src/options.c index cb862ad..7f3698e 100644 --- a/src/options.c +++ b/src/options.c @@ -2466,15 +2466,18 @@ parse_imageclasses(char *buff, void *state) return NULL; } -#ifdef PIXMAP_SUPPORT if (!BEG_STRCASECMP(buff, "icon ")) { +#ifdef PIXMAP_SUPPORT RESET_AND_ASSIGN(rs_icon, Word(2, buff)); +#else + print_warning("Pixmap support was not compiled in, ignoring \"icon\" attribute"); +#endif } else if (!BEG_STRCASECMP(buff, "path ")) { RESET_AND_ASSIGN(rs_path, Word(2, buff)); } else if (!BEG_STRCASECMP(buff, "anim ")) { -# ifdef BACKGROUND_CYCLING_SUPPORT +#ifdef BACKGROUND_CYCLING_SUPPORT char *tmp = PWord(2, buff); if (tmp) { @@ -2482,18 +2485,14 @@ parse_imageclasses(char *buff, void *state) } else { print_error("Parse error in file %s, line %lu: Invalid parameter list \"\" for attribute anim", file_peek_path(), file_peek_line()); } -# else +#else print_warning("Support for the anim attribute was not compiled in, ignoring"); -# endif +#endif } else { print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid " "within context imageclasses", file_peek_path(), file_peek_line(), buff); } -#else - print_warning("Pixmap support was not compiled in, ignoring entire context"); - file_poke_skip(1); -#endif return state; } @@ -2502,7 +2501,6 @@ parse_image(char *buff, void *state) { int idx; -#ifdef PIXMAP_SUPPORT if (*buff == CONF_BEGIN_CHAR) { int *tmp; @@ -2678,6 +2676,7 @@ parse_image(char *buff, void *state) FREE(fg); FREE(bg); +#ifdef PIXMAP_SUPPORT } else if (!BEG_STRCASECMP(buff, "file ")) { char *filename = PWord(2, buff); @@ -2780,6 +2779,7 @@ parse_image(char *buff, void *state) print_error("Parse error in file %s, line %lu: Color must be either \"image\", \"red\", \"green\", or \"blue\"", file_peek_path(), file_peek_line()); return NULL; } +#endif } else if (!BEG_STRCASECMP(buff, "border ")) { if (idx < 0) { @@ -2869,11 +2869,6 @@ parse_image(char *buff, void *state) "within context image", file_peek_path(), file_peek_line(), buff); } return ((void *) state); -#else - print_warning("Pixmap support was not compiled in, ignoring entire context"); - file_poke_skip(1); - return NULL; -#endif } static void * @@ -3712,11 +3707,13 @@ post_parse(void) images[i].mode = MODE_IMAGE & ALLOW_IMAGE; } images[i].current = images[i].norm; +#ifdef PIXMAP_SUPPORT if (rs_pixmaps[i]) { reset_simage(images[i].norm, RESET_ALL_SIMG); load_image(rs_pixmaps[i], images[i].norm); FREE(rs_pixmaps[i]); /* These are created by StrDup() */ } +#endif if (images[i].selected) { /* If we have a bevel but no border, use the bevel as a border. */ if (images[i].selected->iml->bevel && !(images[i].selected->iml->border)) { @@ -3798,6 +3795,7 @@ post_parse(void) /* Update buttonbar sizes based on new imageclass info. */ bbar_resize_all(-1); +#ifdef PIXMAP_SUPPORT /* Support the deprecated forms by converting the syntax to the new system */ if (rs_shade != 0) { char buff[10]; @@ -3894,6 +3892,7 @@ post_parse(void) } FREE(rs_cmod_blue); } +#endif if (Options & Opt_reverseVideo) { char *tmp; @@ -4144,12 +4143,14 @@ save_config(char *path, unsigned char save_theme) if (save_theme) { fprintf(fp, " begin imageclasses\n"); fprintf(fp, " path \"%s\"\n", rs_path); +#ifdef PIXMAP_SUPPORT if (rs_icon != NULL) { fprintf(fp, " icon %s\n", rs_icon); } if (rs_anim_delay) { /* FIXME: Do something here! */ } +#endif for (i = 0; i < image_max; i++) { fprintf(fp, " begin image\n"); switch (i) { @@ -4196,13 +4197,16 @@ save_config(char *path, unsigned char save_theme) /* Now save each state. */ simg = images[i].norm; +#ifdef PIXMAP_SUPPORT if (simg->iml->im) { imlib_context_set_image(simg->iml->im); } +#endif fprintf(fp, " state normal\n"); if (simg->fg || simg->bg) { fprintf(fp, " color 0x%08x 0x%08x\n", (unsigned int) simg->fg, (unsigned int) simg->bg); } +#ifdef PIXMAP_SUPPORT if (simg->iml->im) { fprintf(fp, " file %s\n", NONULL(imlib_image_get_filename())); } @@ -4233,6 +4237,7 @@ save_config(char *path, unsigned char save_theme) if (simg->iml->bmod) { fprintf(fp, " colormod blue 0x%02x 0x%02x 0x%02x\n", simg->iml->bmod->brightness, simg->iml->bmod->contrast, simg->iml->bmod->gamma); } +#endif if (simg->iml->border) { fprintf(fp, " border %hu %hu %hu %hu\n", simg->iml->border->left, simg->iml->border->right, simg->iml->border->top, simg->iml->border->bottom); } @@ -4246,13 +4251,16 @@ save_config(char *path, unsigned char save_theme) /* Selected state */ if (images[i].selected != images[i].norm) { simg = images[i].selected; +#ifdef PIXMAP_SUPPORT if (simg->iml->im) { imlib_context_set_image(simg->iml->im); } +#endif fprintf(fp, " state selected\n"); if (simg->fg || simg->bg) { fprintf(fp, " color 0x%08x 0x%08x\n", (unsigned int) simg->fg, (unsigned int) simg->bg); } +#ifdef PIXMAP_SUPPORT if (simg->iml->im) { fprintf(fp, " file %s\n", NONULL(imlib_image_get_filename())); } @@ -4283,6 +4291,7 @@ save_config(char *path, unsigned char save_theme) if (simg->iml->bmod) { fprintf(fp, " colormod blue 0x%02x 0x%02x 0x%02x\n", simg->iml->bmod->brightness, simg->iml->bmod->contrast, simg->iml->bmod->gamma); } +#endif if (simg->iml->border) { fprintf(fp, " border %hu %hu %hu %hu\n", simg->iml->border->left, simg->iml->border->right, simg->iml->border->top, simg->iml->border->bottom); } @@ -4297,13 +4306,16 @@ save_config(char *path, unsigned char save_theme) /* Clicked state */ if (images[i].clicked != images[i].norm) { simg = images[i].clicked; +#ifdef PIXMAP_SUPPORT if (simg->iml->im) { imlib_context_set_image(simg->iml->im); } +#endif fprintf(fp, " state clicked\n"); if (simg->fg || simg->bg) { fprintf(fp, " color 0x%08x 0x%08x\n", (unsigned int) simg->fg, (unsigned int) simg->bg); } +#ifdef PIXMAP_SUPPORT if (simg->iml->im) { fprintf(fp, " file %s\n", NONULL(imlib_image_get_filename())); } @@ -4334,6 +4346,7 @@ save_config(char *path, unsigned char save_theme) if (simg->iml->bmod) { fprintf(fp, " colormod blue 0x%02x 0x%02x 0x%02x\n", simg->iml->bmod->brightness, simg->iml->bmod->contrast, simg->iml->bmod->gamma); } +#endif if (simg->iml->border) { fprintf(fp, " border %hu %hu %hu %hu\n", simg->iml->border->left, simg->iml->border->right, simg->iml->border->top, simg->iml->border->bottom); } @@ -4348,13 +4361,16 @@ save_config(char *path, unsigned char save_theme) /* Disabled state */ if (images[i].disabled != images[i].norm) { simg = images[i].disabled; +#ifdef PIXMAP_SUPPORT if (simg->iml->im) { imlib_context_set_image(simg->iml->im); } +#endif fprintf(fp, " state disabled\n"); if (simg->fg || simg->bg) { fprintf(fp, " color 0x%08x 0x%08x\n", (unsigned int) simg->fg, (unsigned int) simg->bg); } +#ifdef PIXMAP_SUPPORT if (simg->iml->im) { fprintf(fp, " file %s\n", NONULL(imlib_image_get_filename())); } @@ -4385,6 +4401,7 @@ save_config(char *path, unsigned char save_theme) if (simg->iml->bmod) { fprintf(fp, " colormod blue 0x%02x 0x%02x 0x%02x\n", simg->iml->bmod->brightness, simg->iml->bmod->contrast, simg->iml->bmod->gamma); } +#endif if (simg->iml->border) { fprintf(fp, " border %hu %hu %hu %hu\n", simg->iml->border->left, simg->iml->border->right, simg->iml->border->top, simg->iml->border->bottom); } diff --git a/src/pixmap.c b/src/pixmap.c index 7da2f09..8d109e1 100644 --- a/src/pixmap.c +++ b/src/pixmap.c @@ -57,10 +57,14 @@ static const char cvs_ident[] = "$Id$"; static Imlib_Border bord_none = { 0, 0, 0, 0 }; static colormod_t cmod_none = { 256, 256, 256 }; +# ifdef PIXMAP_OFFSET Pixmap desktop_pixmap = None, viewport_pixmap = None; Pixmap buffer_pixmap = None; Window desktop_window = None; unsigned char desktop_pixmap_is_mine = 0; +# endif +#endif + image_t images[image_max] = { {None, 0, 0, NULL, NULL, NULL, NULL, NULL}, @@ -79,9 +83,6 @@ image_t images[image_max] = {None, 0, 0, NULL, NULL, NULL, NULL, NULL} }; -#endif - -#ifdef PIXMAP_SUPPORT static const char *get_iclass_name(unsigned char); static void copy_buffer_pixmap(unsigned char mode, unsigned long fill, unsigned short width, unsigned short height); @@ -119,6 +120,7 @@ image_mode_any(unsigned char mode) return ismode; } +#ifdef PIXMAP_SUPPORT unsigned short parse_pixmap_ops(char *str) { diff --git a/src/pixmap.h b/src/pixmap.h index 0848868..658001d 100644 --- a/src/pixmap.h +++ b/src/pixmap.h @@ -31,27 +31,28 @@ /************ Macros and Definitions ************/ #ifdef PIXMAP_SUPPORT -# define background_is_image() ((buffer_pixmap) || (images[image_bg].current && images[image_bg].current->iml && images[image_bg].current->iml->im)) -# define background_is_trans() (images[image_bg].mode & MODE_TRANS) +# define background_is_image() ((buffer_pixmap) || (images[image_bg].current && images[image_bg].current->iml && images[image_bg].current->iml->im)) +# define background_is_trans() (images[image_bg].mode & MODE_TRANS) # define background_is_viewport() (images[image_bg].mode & MODE_VIEWPORT) -# define background_is_auto() (images[image_bg].mode & MODE_AUTO) -# define background_is_pixmap() (background_is_image() || background_is_trans() || background_is_viewport() || background_is_auto()) +# define background_is_auto() (images[image_bg].mode & MODE_AUTO) +# define background_is_pixmap() (background_is_image() || (images[image_bg].mode & (MODE_TRANS | MODE_VIEWPORT | MODE_AUTO))) # define delete_simage(simg) do { \ imlib_free_pixmap_and_mask((simg)->pmap->pixmap); \ imlib_context_set_image((simg)->iml->im); \ imlib_free_image_and_decache(); \ (simg)->pmap->pixmap = None; (simg)->iml->im = NULL; \ } while (0) -# define CONVERT_SHADE(s) (0xff - (((s) * 0xff) / 100)) +# define CONVERT_SHADE(s) (0xff - (((s) * 0xff) / 100)) # define CONVERT_TINT_RED(t) (((t) & 0xff0000) >> 16) # define CONVERT_TINT_GREEN(t) (((t) & 0x00ff00) >> 8) # define CONVERT_TINT_BLUE(t) ((t) & 0x0000ff) #else -# define background_is_image() NOP -# define background_is_trans() NOP -# define background_is_viewport() NOP -# define background_is_auto() NOP -# define get_image_type_string(t) NOP +# define background_is_image() (0) +# define background_is_trans() (0) +# define background_is_viewport() (0) +# define background_is_auto() (0) +# define background_is_pixmap() (0) +# define get_image_type_string(t) ((char *) "") # define delete_simage(simg) NOP #endif #define PIXMAP_EXT NULL @@ -183,10 +184,23 @@ extern Pixmap desktop_pixmap, viewport_pixmap, buffer_pixmap; extern Window desktop_window; /************ Function Prototypes ************/ +#ifndef PIXMAP_SUPPORT +# define render_simage(s, win, w, h, which, r) NOP +# define free_simage(s) NOP +# define create_simage() ((simage_t *) NULL) +# define load_image(f, s) ((unsigned char) 0) +# define check_image_ipc(w) ((unsigned char) 0) +# define redraw_image(w) NOP +# define redraw_images_by_mode(w) NOP +# define paste_simage(s, which, d, x, y, w, h) NOP +# define set_icon_pixmap(f, h) NOP +#endif + _XFUNCPROTOBEGIN extern const char *get_image_type(unsigned char); extern unsigned char image_mode_any(unsigned char); +#ifdef PIXMAP_SUPPORT extern unsigned short parse_pixmap_ops(char *); extern unsigned short set_pixmap_scale(const char *, pixmap_t *); extern unsigned char check_image_ipc(unsigned char); @@ -205,15 +219,16 @@ extern void render_simage(simage_t *, Window, unsigned short, unsigned short, un extern const char *search_path(const char *, const char *, const char *); extern unsigned char load_image(const char *, simage_t *); extern void free_desktop_pixmap(void); -#ifdef PIXMAP_OFFSET +# ifdef PIXMAP_OFFSET extern unsigned char need_colormod(imlib_t *); extern void colormod_trans(Pixmap, imlib_t *, GC, unsigned short, unsigned short); extern unsigned char update_desktop_info(int *, int *); extern Window get_desktop_window(void); extern Pixmap get_desktop_pixmap(void); -#endif +# endif extern void shaped_window_apply_mask(Drawable, Pixmap); extern void set_icon_pixmap(char *, XWMHints *); +#endif _XFUNCPROTOEND diff --git a/src/profile.h b/src/profile.h index 743fe67..b80dfe4 100644 --- a/src/profile.h +++ b/src/profile.h @@ -43,7 +43,7 @@ typedef struct { # define PROF_INIT(f) NOP # define PROF_DONE(f) NOP # define PROF_TIME(f) NOP -# define PROF_FUNC(f, c) NOP +# define PROF_FUNC(f, c) c; #endif /* ENABLE_PROFILE */ #endif /* _PROFILE_H */ diff --git a/src/screen.c b/src/screen.c index 1249fcf..799644d 100644 --- a/src/screen.c +++ b/src/screen.c @@ -1013,13 +1013,9 @@ scr_erase_screen(int mode) rend_t ren; long gcmask; XGCValues gcvalue; - Drawable draw_buffer; Pixmap pmap = None; - - D_SCREEN(("scr_erase_screen(%d) at screen row: %d\n", mode, screen.row)); - REFRESH_ZERO_SCROLLBACK; - RESET_CHSTAT; - row_offset = TermWin.saveLines; +#ifdef PIXMAP_SUPPORT + Drawable draw_buffer; if (buffer_pixmap) { draw_buffer = buffer_pixmap; @@ -1027,6 +1023,13 @@ scr_erase_screen(int mode) } else { draw_buffer = TermWin.vt; } +#endif + + D_SCREEN(("scr_erase_screen(%d) at screen row: %d\n", mode, screen.row)); + REFRESH_ZERO_SCROLLBACK; + RESET_CHSTAT; + row_offset = TermWin.saveLines; + switch (mode) { case 0: /* erase to end of screen */ @@ -1590,7 +1593,6 @@ scr_refresh(int type) XGCValues gcvalue; /* Graphics Context values */ char buf[MAX_COLS + 1]; register char *buffer = buf; - Drawable draw_buffer; Pixmap pmap = images[image_bg].current->pmap->pixmap; int (*draw_string) (), (*draw_image_string) (); register int low_x = 99999, low_y = 99999, high_x = 0, high_y = 0; @@ -1601,6 +1603,15 @@ scr_refresh(int type) register int nrows = TermWin.nrow; register int ncols = TermWin.ncol; #endif +#ifdef PIXMAP_SUPPORT + Drawable draw_buffer; + + if (buffer_pixmap) { + draw_buffer = buffer_pixmap; + } else { + draw_buffer = TermWin.vt; + } +#endif PROF_INIT(scr_refresh); @@ -1618,12 +1629,6 @@ scr_refresh(int type) if (type == NO_REFRESH) return; - if (buffer_pixmap) { - draw_buffer = buffer_pixmap; - } else { - draw_buffer = TermWin.vt; - } - row_offset = TermWin.saveLines - TermWin.view_start; fprop = TermWin.fprop; diff --git a/src/screen.h b/src/screen.h index 572419d..d4dc306 100644 --- a/src/screen.h +++ b/src/screen.h @@ -42,6 +42,10 @@ * CLEAR_CHARS: clear chars starting from pixel position * ERASE_ROWS : set rows starting from row to the foreground color */ +#ifndef PIXMAP_SUPPORT +# define buffer_pixmap (0) +# define draw_buffer (TermWin.vt) +#endif #define CLEAR_ROWS(row, num) do {if (buffer_pixmap) {XCopyArea(Xdisplay, pmap, buffer_pixmap, TermWin.gc, Col2Pixel(0), Row2Pixel(row), TermWin.width, Height2Pixel(num), \ Col2Pixel(0), Row2Pixel(row));} XClearArea(Xdisplay, TermWin.vt, Col2Pixel(0), Row2Pixel(row), TermWin.width, Height2Pixel(num), 0);} while (0) #define CLEAR_CHARS(x, y, num) ((buffer_pixmap) \ diff --git a/src/scrollbar.c b/src/scrollbar.c index 31779be..add2e1a 100644 --- a/src/scrollbar.c +++ b/src/scrollbar.c @@ -563,9 +563,11 @@ scrollbar_draw_anchor(unsigned char image_state, unsigned char force_modes) { imlib_t *iml = images[image_st].current->iml, *siml = images[image_sa].current->iml; if (image_mode_is(image_st, MODE_IMAGE) && iml->im) { +#ifdef PIXMAP_SUPPORT imlib_context_set_image(iml->im); tw = imlib_image_get_width(); th = imlib_image_get_height(); +#endif } else if (siml->bevel) { tw = scrollbar_anchor_width() - (siml->bevel->edges->left + siml->bevel->edges->right); th = scrollbar_anchor_width() - (siml->bevel->edges->top + siml->bevel->edges->bottom); diff --git a/src/startup.c b/src/startup.c index 2b19f8e..1bf17e2 100644 --- a/src/startup.c +++ b/src/startup.c @@ -129,10 +129,12 @@ eterm_bootstrap(int argc, char *argv[]) } else { cmap = Xcmap; } +#ifdef PIXMAP_SUPPORT imlib_context_set_display(Xdisplay); imlib_context_set_visual(Xvisual); imlib_context_set_colormap(cmap); imlib_context_set_dither_mask(0); +#endif get_modifiers(); /* Set up modifier masks before parsing config files. */ diff --git a/src/term.c b/src/term.c index 5a3b4ac..19960f9 100644 --- a/src/term.c +++ b/src/term.c @@ -1815,12 +1815,14 @@ xterm_seq(int op, const char *str) } else if (!strcasecmp(color, "blue")) { FREE(iml->bmod); } +# ifdef PIXMAP_OFFSET if (image_mode_is(which, MODE_TRANS) && (desktop_pixmap != None)) { free_desktop_pixmap(); } else if (image_mode_is(which, MODE_VIEWPORT) && (viewport_pixmap != None)) { XFreePixmap(Xdisplay, viewport_pixmap); viewport_pixmap = None; /* Force the re-read */ } +# endif changed = 1; continue; } @@ -1829,12 +1831,14 @@ xterm_seq(int op, const char *str) } D_CMD(("Modifying the %s attribute of the %s color modifier of the %s image to be %s\n", mod, color, get_image_type(which), valptr)); changed = 1; +# ifdef PIXMAP_OFFSET if (image_mode_is(which, MODE_TRANS) && (desktop_pixmap != None)) { free_desktop_pixmap(); } else if (image_mode_is(which, MODE_VIEWPORT) && (viewport_pixmap != None)) { XFreePixmap(Xdisplay, viewport_pixmap); viewport_pixmap = None; /* Force the re-read */ } +# endif if (!strcasecmp(color, "image")) { imlib_t *iml = images[which].current->iml; @@ -2023,6 +2027,7 @@ xterm_seq(int op, const char *str) } break; case 3: +# ifdef PIXMAP_OFFSET get_desktop_window(); if (desktop_window == None) { FOREACH_IMAGE(if (image_mode_is(idx, MODE_TRANS)) {image_set_mode(idx, MODE_IMAGE); image_allow_mode(idx, ALLOW_IMAGE);}); @@ -2030,6 +2035,7 @@ xterm_seq(int op, const char *str) } get_desktop_pixmap(); redraw_images_by_mode(MODE_TRANS | MODE_VIEWPORT); +# endif break; #endif case 10: diff --git a/utils/Esetroot.c b/utils/Esetroot.c index 2a400c8..53578af 100644 --- a/utils/Esetroot.c +++ b/utils/Esetroot.c @@ -17,6 +17,8 @@ static const char cvs_ident[] = "$Id$"; #ifdef HAVE_UNISTD_H # include #endif + +#ifdef PIXMAP_SUPPORT #include #include #include @@ -88,11 +90,12 @@ set_pixmap_property(Pixmap p) XSetCloseDownMode(Xdisplay, RetainPermanent); XFlush(Xdisplay); } +#endif int main(int argc, char *argv[]) { - +#ifdef PIXMAP_SUPPORT unsigned char scale = 0, center = 0, fit = 0; char *displayname = NULL; char *fname = NULL; @@ -234,5 +237,8 @@ main(int argc, char *argv[]) XClearWindow(Xdisplay, Xroot); XFlush(Xdisplay); } +#else + fprintf(stderr, "Eterm was built without pixmap support, so Esetroot is fairly useless. Sorry.\n"); +#endif return 0; }