Enlightenment CVS committal Author : kwo Project : e16 Module : e
Dir : e16/e/src Modified Files: backgrounds.c Log Message: More background selector speedups. =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/backgrounds.c,v retrieving revision 1.36 retrieving revision 1.37 diff -u -3 -r1.36 -r1.37 --- backgrounds.c 24 Jul 2005 18:29:50 -0000 1.36 +++ backgrounds.c 26 Jul 2005 16:58:31 -0000 1.37 @@ -944,8 +944,8 @@ return bg->last_viewed; } -static Pixmap -BackgroundCacheMini(Background * bg, int keep) +static Imlib_Image * +BackgroundCacheMini(Background * bg, int keep, int nuke) { char s[4096]; Imlib_Image *im; @@ -953,6 +953,18 @@ Esnprintf(s, sizeof(s), "%s/cached/bgsel/%s.png", EDirUserCache(), BackgroundGetName(bg)); + + im = ELoadImage(s); + if (im) + { + imlib_context_set_image(im); + if (nuke) + imlib_free_image_and_decache(); + else + goto done; + } + + /* Create new cached bg mini image */ pmap = ECreatePixmap(VRoot.win, 64, 48, VRoot.depth); BackgroundApply(bg, pmap, 64, 48, 0); imlib_context_set_drawable(pmap); @@ -960,12 +972,13 @@ imlib_context_set_image(im); imlib_image_set_format("png"); imlib_save_image(s); - imlib_free_image_and_decache(); + EFreePixmap(pmap); + done: if (keep) - return pmap; - EFreePixmap(pmap); - return None; + return im; + imlib_free_image(); + return NULL; } #define S(str) ((str) ? str : "(null)") @@ -1438,6 +1451,7 @@ static Background *tmp_bg; /* The background being configured */ static Pixmap tmp_bg_mini_pixmap = None; static int tmp_bg_sel_sliderval = 0; +static int tmp_bg_sel_sliderval_old = -1; static int tmp_bg_r; static int tmp_bg_g; static int tmp_bg_b; @@ -1452,7 +1466,7 @@ static char tmp_userbg; static int tmp_bg_timeout; -static void BG_RedrawView(char nuke_old); +static void BG_RedrawView(void); static void CB_ConfigureBG(Dialog * d __UNUSED__, int val, void *data __UNUSED__) @@ -1489,8 +1503,8 @@ DeskSetBg(i, tmp_bg, 1); } - BackgroundCacheMini(tmp_bg, 0); - BG_RedrawView(1); + BackgroundCacheMini(tmp_bg, 0, 1); + BG_RedrawView(); if (!tmp_bg_image) BackgroundImagesRemove(tmp_bg); @@ -1610,7 +1624,7 @@ CB_DesktopMiniDisplayRedraw(NULL, 1, bg_mini_disp); /* Redraw scrolling BG list */ - BG_RedrawView(0); + BG_RedrawView(); for (i = 0; i < 10; i++) DialogDrawItems(bg_sel_dialog, tmp_w[i], 0, 0, 99999, 99999); @@ -1646,7 +1660,7 @@ DeskSetBg(DesksGetCurrent(), tmp_bg, 0); - BG_RedrawView(0); + BG_RedrawView(); autosave(); } @@ -1704,7 +1718,7 @@ void *data __UNUSED__) { MoveItemToListTop(tmp_bg, LIST_TYPE_BACKGROUND); - BG_RedrawView(0); + BG_RedrawView(); autosave(); } @@ -1712,7 +1726,7 @@ /* Draw the scrolling background image window */ static void -BG_RedrawView(char nuke_old) +BG_RedrawView(void) { int num, i; Background **bglist; @@ -1742,10 +1756,8 @@ { if (((x + 64 + 8) >= 0) && (x < w)) { - Pixmap p2; ImageClass *ic; Imlib_Image *im; - char s[4096]; ic = ImageclassFind("DIALOG_BUTTON", 0); if (ic) @@ -1781,31 +1793,13 @@ } else { - Esnprintf(s, sizeof(s), "%s/cached/bgsel/%s.png", - EDirUserCache(), BackgroundGetName(bglist[i])); - im = ELoadImage(s); - if (!im) - { - p2 = BackgroundCacheMini(bglist[i], 1); - XCopyArea(disp, p2, pmap, gc, 0, 0, 64, 48, x + 4, 4); - EFreePixmap(p2); - } - else + im = BackgroundCacheMini(bglist[i], 1, 0); + if (im) { - if (nuke_old) - { - imlib_context_set_image(im); - imlib_free_image_and_decache(); - im = ELoadImage(s); - } - if (im) - { - imlib_context_set_image(im); - imlib_context_set_drawable(pmap); - imlib_render_image_on_drawable_at_size(x + 4, 4, 64, - 48); - imlib_free_image(); - } + imlib_context_set_image(im); + imlib_context_set_drawable(pmap); + imlib_render_image_on_drawable_at_size(x + 4, 4, 64, 48); + imlib_free_image(); } } } @@ -1821,7 +1815,10 @@ static void CB_BGAreaSlide(Dialog * d __UNUSED__, int val __UNUSED__, void *data __UNUSED__) { - BG_RedrawView(0); + if (tmp_bg_sel_sliderval == tmp_bg_sel_sliderval_old) + return; + BG_RedrawView(); + tmp_bg_sel_sliderval_old = tmp_bg_sel_sliderval; } static void @@ -1868,11 +1865,6 @@ } Efree(bglist); break; - - case ButtonRelease: - tmp_bg_selected = -1; - BG_RedrawView(0); - break; } } @@ -2471,7 +2463,7 @@ ShowDialog(d); CB_DesktopMiniDisplayRedraw(NULL, 1, area); - BG_RedrawView(0); + BG_RedrawView(); BGSettingsGoTo(tmp_bg); } ------------------------------------------------------- SF.Net email is sponsored by: Discover Easy Linux Migration Strategies from IBM. Find simple to follow Roadmaps, straightforward articles, informative Webcasts and more! Get everything you need to get up to speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs