Enlightenment CVS committal
Author : kwo
Project : e16
Module : e
Dir : e16/e/src
Modified Files:
pager.c
Log Message:
Fix pager background pixmap handling.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/pager.c,v
retrieving revision 1.85
retrieving revision 1.86
diff -u -3 -r1.85 -r1.86
--- pager.c 15 Apr 2004 19:44:38 -0000 1.85
+++ pager.c 1 May 2004 10:35:47 -0000 1.86
@@ -27,7 +27,7 @@
char *name;
Window win;
Pixmap pmap;
- Pixmap bgpmap;
+ PmapMask bgpmap;
int desktop;
int w, h;
int dw, dh;
@@ -196,7 +196,6 @@
p->dh = 48;
p->win = ECreateWindow(root.win, 0, 0, p->w, p->h, 0);
p->pmap = ECreatePixmap(disp, p->win, p->w, p->h, root.depth);
- p->bgpmap = ECreatePixmap(disp, p->win, p->w / ax, p->h / ay, root.depth);
ESetWindowBackgroundPixmap(disp, p->win, p->pmap);
p->hi_win = ECreateWindow(root.win, 0, 0, 3, 3, 0);
p->hi_visible = 0;
@@ -240,14 +239,13 @@
GetAreaSize(&ax, &ay);
EFreePixmap(disp, p->pmap);
- EFreePixmap(disp, p->bgpmap);
+ FreePmapMask(&p->bgpmap);
EResizeWindow(disp, p->win, w, h);
p->w = w;
p->h = h;
p->dw = w / ax;
p->dh = h / ay;
p->pmap = ECreatePixmap(disp, p->win, p->w, p->h, root.depth);
- p->bgpmap = ECreatePixmap(disp, p->win, p->w / ax, p->h / ay, root.depth);
if (p->visible)
PagerRedraw(p, 1);
ESetWindowBackgroundPixmap(disp, p->win, p->pmap);
@@ -415,8 +413,7 @@
EDestroyWindow(disp, p->hi_win);
if (p->pmap)
EFreePixmap(disp, p->pmap);
- if (p->bgpmap)
- EFreePixmap(disp, p->bgpmap);
+ FreePmapMask(&p->bgpmap);
if (p->border_name)
Efree(p->border_name);
Efree(p);
@@ -642,18 +639,17 @@
{
if ((newbg > 0) && (newbg < 3))
{
+ FreePmapMask(&p->bgpmap);
+
if (!Conf.pagers.snap)
{
ImageClass *ic = NULL;
- PmapMask pmm;
- EFreePixmap(disp, p->bgpmap);
ic = FindItem("PAGER_BACKGROUND", 0, LIST_FINDBY_NAME,
LIST_TYPE_ICLASS);
if (ic)
IclassApplyCopy(ic, p->win, p->w / ax, p->h / ay, 0, 0,
- STATE_NORMAL, &pmm, 0);
- p->bgpmap = pmm.pmap;
+ STATE_NORMAL, &p->bgpmap, 0);
}
else
{
@@ -675,22 +671,30 @@
im = imlib_load_image(s);
if (im)
{
- EFreePixmap(disp, p->bgpmap);
imlib_context_set_image(im);
+ p->bgpmap.type = 1;
imlib_render_pixmaps_for_whole_image_at_size(&p->
- bgpmap,
- &mask,
+ bgpmap.
+ pmap,
+ &p->
+ bgpmap.
+ mask,
(p->w /
ax),
(p->h /
ay));
- imlib_free_image();
+ imlib_free_image_and_decache();
}
else
{
+ p->bgpmap.type = 0;
+ p->bgpmap.pmap =
+ ECreatePixmap(disp, p->win, p->w / ax, p->h / ay,
+ root.depth);
+ p->bgpmap.mask = None;
BackgroundApply(desks.desk[p->desktop].bg,
- p->bgpmap, 0);
- imlib_context_set_drawable(p->bgpmap);
+ p->bgpmap.pmap, 0);
+ imlib_context_set_drawable(p->bgpmap.pmap);
im =
imlib_create_image_from_drawable(0, 0, 0,
(p->w / ax),
@@ -703,10 +707,16 @@
}
else
{
+ p->bgpmap.type = 0;
+ p->bgpmap.pmap =
+ ECreatePixmap(disp, p->win, p->w / ax, p->h / ay,
+ root.depth);
+ p->bgpmap.mask = None;
XSetForeground(disp, gc, BlackPixel(disp, root.scr));
- XDrawRectangle(disp, p->bgpmap, gc, 0, 0, p->dw, p->dh);
+ XDrawRectangle(disp, p->bgpmap.pmap, gc, 0, 0, p->dw,
+ p->dh);
XSetForeground(disp, gc, WhitePixel(disp, root.scr));
- XFillRectangle(disp, p->bgpmap, gc, 1, 1, p->dw - 2,
+ XFillRectangle(disp, p->bgpmap.pmap, gc, 1, 1, p->dw - 2,
p->dh - 2);
}
}
@@ -715,7 +725,7 @@
for (y = 0; y < ay; y++)
{
for (x = 0; x < ax; x++)
- XCopyArea(disp, p->bgpmap, p->pmap, gc, 0, 0, p->w / ax,
+ XCopyArea(disp, p->bgpmap.pmap, p->pmap, gc, 0, 0, p->w / ax,
p->h / ay, x * (p->w / ax), y * (p->h / ay));
}
-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g.
Take an Oracle 10g class now, and we'll give you the exam FREE.
http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs