Enlightenment CVS committal Author : kwo Project : e16 Module : e
Dir : e16/e/src Modified Files: backgrounds.c backgrounds.h desktops.c desktops.h ecompmgr.c iclass.c pager.c Log Message: Prepare to fix various issues related to background pixmap handling. =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/backgrounds.c,v retrieving revision 1.50 retrieving revision 1.51 diff -u -3 -r1.50 -r1.51 --- backgrounds.c 1 Nov 2005 17:15:51 -0000 1.50 +++ backgrounds.c 21 Nov 2005 17:48:44 -0000 1.51 @@ -274,22 +274,17 @@ { Background *bg; - bg = Emalloc(sizeof(Background)); + bg = Ecalloc(1, sizeof(Background)); if (!bg) return NULL; bg->name = Estrdup(name); - bg->pmap = 0; - bg->last_viewed = 0; ESetColor(&(bg->bg_solid), 160, 160, 160); if (solid) bg->bg_solid = *solid; - bg->bg.file = NULL; if (bgn) bg->bg.file = Estrdup(bgn); - bg->bg.real_file = NULL; - bg->bg.im = NULL; bg->bg_tile = tile; bg->bg.keep_aspect = keep_aspect; bg->bg.xjust = xjust; @@ -297,23 +292,14 @@ bg->bg.xperc = xperc; bg->bg.yperc = yperc; - bg->top.file = NULL; if (top) bg->top.file = Estrdup(top); - bg->top.real_file = NULL; - bg->top.im = NULL; bg->top.keep_aspect = tkeep_aspect; bg->top.xjust = txjust; bg->top.yjust = tyjust; bg->top.xperc = txperc; bg->top.yperc = typerc; -#if ENABLE_COLOR_MODIFIERS - bg->cmclass = NULL; -#endif - bg->keepim = 0; - bg->ref_count = 0; - AddItem(bg, bg->name, 0, LIST_TYPE_BACKGROUND); return bg; @@ -397,11 +383,7 @@ bg->top.yperc = typerc; if (updated) - { - if (bg->pmap) - imlib_free_pixmap_and_mask(bg->pmap); - bg->pmap = 0; - } + BackgroundPixmapFree(bg); return updated; } @@ -756,6 +738,13 @@ return pmap; } +void +BackgroundApplyPmap(Background * bg, Drawable draw, + unsigned int w, unsigned int h) +{ + BackgroundApply(bg, draw, w, h, 0); +} + /* * Apply a background to window/pixmap. * The (scaled) BG pixmap is stored in bg->pmap. @@ -998,7 +987,7 @@ /* Create new cached bg mini image */ pmap = ECreatePixmap(VRoot.win, 64, 48, VRoot.depth); - BackgroundApply(bg, pmap, 64, 48, 0); + BackgroundApplyPmap(bg, pmap, 64, 48); imlib_context_set_drawable(pmap); im = imlib_create_image_from_drawable(0, 0, 0, 64, 48, 0); imlib_context_set_image(im); @@ -1178,7 +1167,7 @@ desk = atoi(s2); if (desk < DesksGetNumber()) { - if ((DeskGetBackground(DeskGet(desk)) == NULL) || + if ((DeskBackgroundGet(DeskGet(desk)) == NULL) || (Conf.backgrounds.user)) { if (!ignore) @@ -1188,7 +1177,7 @@ i3, i4, i5, i6, bg2, j1, j2, j3, j4, j5); } - DeskAssignBg(desk, bg); + DeskBackgroundAssign(desk, bg); } } break; @@ -1352,9 +1341,9 @@ { Desk *dsk = DeskGet(j); - if (BackgroundIsNone(bglist[i]) && !DeskGetBackground(dsk)) + if (BackgroundIsNone(bglist[i]) && !DeskBackgroundGet(dsk)) fprintf(fs, "564 %d\n", j); - if (DeskGetBackground(dsk) == bglist[i]) + if (DeskBackgroundGet(dsk) == bglist[i]) fprintf(fs, "564 %d\n", j); } @@ -1388,8 +1377,8 @@ for (j = 0; j < DesksGetNumber(); j++) { dsk = DeskGet(j); - if ((DeskGetBackground(dsk)) && (DeskIsViewable(dsk))) - BackgroundTouch(DeskGetBackground(dsk)); + if ((DeskBackgroundGet(dsk)) && (DeskIsViewable(dsk))) + BackgroundTouch(DeskBackgroundGet(dsk)); } lst = (Background **) ListItemType(&num, LIST_TYPE_BACKGROUND); @@ -1405,14 +1394,14 @@ for (j = 0; j < DesksGetNumber(); j++) { dsk = DeskGet(j); - if (lst[i] == DeskGetBackground(dsk) && DeskIsViewable(dsk)) + if (lst[i] == DeskBackgroundGet(dsk) && DeskIsViewable(dsk)) goto next; } for (j = 0; j < DesksGetNumber(); j++) { dsk = DeskGet(j); - if (lst[i] != DeskGetBackground(dsk) || DeskIsViewable(dsk)) + if (lst[i] != DeskBackgroundGet(dsk) || DeskIsViewable(dsk)) continue; /* Unviewable desktop - update the virtual root hints */ @@ -1532,8 +1521,8 @@ { Desk *dsk = DeskGet(i); - if (DeskGetBackground(dsk) == tmp_bg) - DeskSetBg(dsk, tmp_bg, 1); + if (DeskBackgroundGet(dsk) == tmp_bg) + DeskBackgroundSet(dsk, tmp_bg, 1); } BackgroundCacheMini(tmp_bg, 0, 1); @@ -1572,7 +1561,7 @@ if (val == 1) { ESetWindowBackgroundPixmap(win, pmap); - BackgroundApply(tmp_bg, pmap, w, h, 0); + BackgroundApplyPmap(tmp_bg, pmap, w, h); } else { @@ -1587,7 +1576,7 @@ tmp_bg->top.yjust, tmp_bg->top.xperc, tmp_bg->top.yperc); - BackgroundApply(bg, pmap, w, h, 0); + BackgroundApplyPmap(bg, pmap, w, h); BackgroundDestroy(bg); } EClearWindow(win); @@ -1689,7 +1678,7 @@ DialogItemSliderSetVal(bg_sel_slider, 0); DialogDrawItems(bg_sel_dialog, bg_sel_slider, 0, 0, 99999, 99999); - DeskSetBg(DesksGetCurrent(), tmp_bg, 0); + DeskBackgroundSet(DesksGetCurrent(), tmp_bg, 0); BG_RedrawView(); @@ -1727,7 +1716,7 @@ } } - DeskSetBg(DesksGetCurrent(), bg, 0); + DeskBackgroundSet(DesksGetCurrent(), bg, 0); if (val == 0) BackgroundDestroy(tmp_bg); else @@ -1883,7 +1872,7 @@ if ((tmp_bg_selected >= 0) && (tmp_bg_selected < num)) { BgDialogSetNewCurrent(bglist[tmp_bg_selected]); - DeskSetBg(DesksGetCurrent(), tmp_bg, 0); + DeskBackgroundSet(DesksGetCurrent(), tmp_bg, 0); autosave(); } Efree(bglist); @@ -1947,7 +1936,7 @@ if ((bglist[i] == tmp_bg) && (i > 0)) { BGSettingsGoTo(bglist[i - 1]); - DeskSetBg(DesksGetCurrent(), bglist[i - 1], 0); + DeskBackgroundSet(DesksGetCurrent(), bglist[i - 1], 0); break; } } @@ -1967,7 +1956,7 @@ if ((bglist[i] == tmp_bg) && (i < (num - 1))) { BGSettingsGoTo(bglist[i + 1]); - DeskSetBg(DesksGetCurrent(), bglist[i + 1], 0); + DeskBackgroundSet(DesksGetCurrent(), bglist[i + 1], 0); break; } } @@ -2523,8 +2512,8 @@ { Desk *dsk = DeskGet(i); - if (DeskGetBackground(dsk) == bg) - DeskSetBg(dsk, bg, 0); + if (DeskBackgroundGet(dsk) == bg) + DeskBackgroundSet(dsk, bg, 0); } } } @@ -2557,7 +2546,7 @@ { for (i = 0; i < (int)DesksGetNumber(); i++) { - bg = DeskGetBackground(DeskGet(i)); + bg = DeskBackgroundGet(DeskGet(i)); if (bg) IpcPrintf("%i %s\n", i, BackgroundGetName(bg)); } @@ -2577,7 +2566,7 @@ } else if (!strncmp(cmd, "cfg", 2)) { - SettingsBackground(DeskGetBackground(DesksGetCurrent())); + SettingsBackground(DeskBackgroundGet(DesksGetCurrent())); } else if (!strncmp(cmd, "del", 2)) { @@ -2632,7 +2621,7 @@ num = DesksGetCurrentNum(); sscanf(p, "%d %n", &num, &len); - DeskSetBg(DeskGet(num), bg, 1); + DeskBackgroundSet(DeskGet(num), bg, 1); autosave(); } else if (!strncmp(cmd, "xget", 2)) @@ -2678,7 +2667,7 @@ if (!w[0]) break; i = atoi(w); - DeskSetBg(DeskGet(i), bg, 1); + DeskBackgroundSet(DeskGet(i), bg, 1); } autosave(); } @@ -2710,9 +2699,9 @@ bg->cmclass->ref_count--; bg->cmclass = cm; } - if (bg->pmap) - imlib_free_pixmap_and_mask(bg->pmap); - bg->pmap = 0; + + BackgroundPixmapFree(bg); + for (i = 0; i < DesksGetNumber(); i++) { if ((desks.desk[i].bg == bg) && (desks.desk[i].viewable)) =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/backgrounds.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- backgrounds.h 24 Oct 2005 16:05:30 -0000 1.1 +++ backgrounds.h 21 Nov 2005 17:48:44 -0000 1.2 @@ -26,7 +26,6 @@ #define _BACKGROUNDS_H_ /* backgrounds.c */ -int BackgroundsConfigLoad(FILE * fs); char *BackgroundGetUniqueString(Background * bg); void BackgroundPixmapFree(Background * bg); void BackgroundImagesFree(Background * bg, int free_pmap); @@ -34,6 +33,8 @@ Pixmap BackgroundApply(Background * bg, Drawable draw, unsigned int rw, unsigned int rh, int is_win); +void BackgroundApplyPmap(Background * bg, Drawable draw, + unsigned int rw, unsigned int rh); void BackgroundSet(Background * bg, Window win, unsigned int rw, unsigned int rh); void BackgroundIncRefcount(Background * bg); @@ -47,4 +48,6 @@ const char *file, char *thumb, int thlen); +int BackgroundsConfigLoad(FILE * fs); + #endif /* _BACKGROUNDS_H_ */ =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/desktops.c,v retrieving revision 1.199 retrieving revision 1.200 diff -u -3 -r1.199 -r1.200 --- desktops.c 19 Nov 2005 20:43:09 -0000 1.199 +++ desktops.c 21 Nov 2005 17:48:44 -0000 1.200 @@ -406,7 +406,7 @@ Efree(lst); } } - DeskSetBg(dsk, bg, 0); + DeskBackgroundSet(dsk, bg, 0); if (dsk->num > 0) { @@ -527,7 +527,7 @@ } Background * -DeskGetBackground(const Desk * dsk) +DeskBackgroundGet(const Desk * dsk) { return (dsk) ? dsk->bg : NULL; } @@ -855,7 +855,7 @@ } void -DeskAssignBg(unsigned int desk, Background * bg) +DeskBackgroundAssign(unsigned int desk, Background * bg) { if (desk >= ENLIGHTENMENT_CONF_NUM_DESKTOPS) return; @@ -864,7 +864,7 @@ } void -DeskSetBg(Desk * dsk, Background * bg, int refresh) +DeskBackgroundSet(Desk * dsk, Background * bg, int refresh) { if (!dsk) return; @@ -2116,9 +2116,9 @@ pmap = ECreatePixmap(wins[i], 64, 48, VRoot.depth); ESetWindowBackgroundPixmap(wins[i], pmap); - bg = DeskGetBackground(DeskGet(i)); + bg = DeskBackgroundGet(DeskGet(i)); if (bg) - BackgroundApply(bg, pmap, 64, 48, 0); + BackgroundApplyPmap(bg, pmap, 64, 48); else { ic = ImageclassFind("SETTINGS_DESKTOP_AREA", 0); =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/desktops.h,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- desktops.h 19 Nov 2005 20:43:09 -0000 1.12 +++ desktops.h 21 Nov 2005 17:48:44 -0000 1.13 @@ -53,18 +53,19 @@ /* desktops.c */ Desk *DeskGet(unsigned int desk); Desk *DeskGetRelative(Desk * dsk, int inc); -Background *DeskGetBackground(const Desk * dsk); void DeskGetArea(const Desk * dsk, int *ax, int *ay); void DeskSetArea(Desk * dsk, int ax, int ay); int DeskIsViewable(const Desk * dsk); void DeskSetDirtyStack(Desk * dsk, EObj * eo); void DeskRefresh(Desk * dsk); -void DeskAssignBg(unsigned int desk, Background * bg); -void DeskSetBg(Desk * dsk, Background * bg, int refresh); void DeskGoto(Desk * dsk); void DeskGotoNum(unsigned int desk); void DeskRestack(Desk * dsk); +void DeskBackgroundAssign(unsigned int desk, Background * bg); +Background *DeskBackgroundGet(const Desk * dsk); +void DeskBackgroundSet(Desk * dsk, Background * bg, int refresh); + void DeskCurrentGetArea(int *ax, int *ay); void DeskCurrentGotoArea(int ax, int ay); void DeskCurrentMoveAreaBy(int ax, int ay); =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/ecompmgr.c,v retrieving revision 1.80 retrieving revision 1.81 diff -u -3 -r1.80 -r1.81 --- ecompmgr.c 12 Nov 2005 15:11:07 -0000 1.80 +++ ecompmgr.c 21 Nov 2005 17:48:44 -0000 1.81 @@ -498,7 +498,7 @@ } fill = False; - pmap = BackgroundGetPixmap(DeskGetBackground(dsk)); + pmap = BackgroundGetPixmap(DeskBackgroundGet(dsk)); if (pmap == None) { if (cw->pixmap && cw->picture) =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/iclass.c,v retrieving revision 1.82 retrieving revision 1.83 diff -u -3 -r1.82 -r1.83 --- iclass.c 20 Nov 2005 22:47:40 -0000 1.82 +++ iclass.c 21 Nov 2005 17:48:44 -0000 1.83 @@ -170,7 +170,7 @@ for (i = 0; i < num; i++) { dsk = DeskGet(i); - BackgroundPixmapFree(DeskGetBackground(dsk)); + BackgroundPixmapFree(DeskBackgroundGet(dsk)); DeskRefresh(dsk); } } @@ -934,7 +934,7 @@ Drawable bg; int xx, yy; - bg = BackgroundGetPixmap(DeskGetBackground(DesksGetCurrent())); + bg = BackgroundGetPixmap(DeskBackgroundGet(DesksGetCurrent())); if ((flags & ICLASS_ATTR_GLASS) || (bg == None)) { cr = VRoot.win; =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/pager.c,v retrieving revision 1.187 retrieving revision 1.188 diff -u -3 -r1.187 -r1.188 --- pager.c 19 Nov 2005 19:32:45 -0000 1.187 +++ pager.c 21 Nov 2005 17:48:44 -0000 1.188 @@ -506,7 +506,7 @@ return; } - bg = DeskGetBackground(p->dsk); + bg = DeskBackgroundGet(p->dsk); if (bg) { char s[4096]; @@ -528,7 +528,7 @@ } else { - BackgroundApply(bg, pmap, p->dw, p->dh, 0); + BackgroundApplyPmap(bg, pmap, p->dw, p->dh); imlib_context_set_drawable(pmap); im = imlib_create_image_from_drawable(0, 0, 0, p->dw, p->dh, 1); imlib_context_set_image(im); ------------------------------------------------------- This SF.Net email is sponsored by the JBoss Inc. Get Certified Today Register for a JBoss Training Course. Free Certification Exam for All Training Attendees Through End of 2005. For more info visit: http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs