kwo pushed a commit to branch master.

http://git.enlightenment.org/e16/e16.git/commit/?id=faf6393a8bb3bfea8f7aa20b85e67147afbad989

commit faf6393a8bb3bfea8f7aa20b85e67147afbad989
Author: Kim Woelders <k...@woelders.dk>
Date:   Tue Dec 8 16:11:12 2020 +0100

    Introduce EImageDefineCursor()
---
 src/eimage.c     | 25 +++++++++++++++++++++++++
 src/eimage.h     |  2 ++
 src/extinitwin.c | 17 +----------------
 3 files changed, 28 insertions(+), 16 deletions(-)

diff --git a/src/eimage.c b/src/eimage.c
index 1817acf0..9487d6ac 100644
--- a/src/eimage.c
+++ b/src/eimage.c
@@ -681,3 +681,28 @@ PmapMaskFree(PmapMask * pmm)
        pmm->mask = 0;
      }
 }
+
+#if USE_XRENDER
+
+EX_Cursor
+EImageDefineCursor(EImage * im, int xh, int yh)
+{
+   EX_Cursor           curs;
+   int                 w, h;
+   EX_Pixmap           pmap;
+   EX_Picture          pict;
+
+   EImageGetSize(im, &w, &h);
+
+   pict = EPictureCreateBuffer(VROOT, w, h, 1, &pmap);
+
+   EImageRenderOnDrawableARGB(im, pmap, w, h);
+   EFreePixmap(pmap);
+
+   curs = XRenderCreateCursor(disp, pict, xh, yh);
+   XRenderFreePicture(disp, pict);
+
+   return curs;
+}
+
+#endif /* USE_COMPOSITE */
diff --git a/src/eimage.h b/src/eimage.h
index 2d9a64d5..899d937c 100644
--- a/src/eimage.h
+++ b/src/eimage.h
@@ -116,6 +116,8 @@ void                ScaleTile(Win wsrc, EX_Drawable src, 
Win wdst,
                              EX_Pixmap dst, int dx, int dy, int dw, int dh,
                              int flags);
 
+EX_Cursor           EImageDefineCursor(EImage * im, int xh, int yh);
+
 void                EDrawableDumpImage(EX_Drawable draw, const char *txt);
 
 EImage             *ThemeImageLoad(const char *file);
diff --git a/src/extinitwin.c b/src/extinitwin.c
index 1c56c384..da1fc0bb 100644
--- a/src/extinitwin.c
+++ b/src/extinitwin.c
@@ -47,8 +47,6 @@ typedef struct {
 typedef void        (EiwLoopFunc) (EX_Window win, EImage * im, EiwData * d);
 
 #if USE_EIWC_RENDER
-#include <Imlib2.h>
-
 static void         _eiw_render_loop(EX_Window win, EImage * im, EiwData * d);
 
 static EiwLoopFunc *
@@ -62,7 +60,6 @@ _eiw_render_init(EX_Window win __UNUSED__, EiwData * d)
    if (!vis)
       return NULL;
 
-   imlib_context_set_visual(vis);
    d->curs = NoXID;
 
    return _eiw_render_loop;
@@ -72,24 +69,12 @@ static void
 _eiw_render_loop(EX_Window win, EImage * im, EiwData * d)
 {
    int                 w, h;
-   XRenderPictFormat  *pictfmt;
-   EX_Pixmap           pmap;
-   EX_Picture          pict;
 
    EImageGetSize(im, &w, &h);
 
-   pictfmt = XRenderFindStandardFormat(disp, PictStandardARGB32);
-   pmap = XCreatePixmap(disp, WinGetXwin(RROOT), w, h, 32);
-   imlib_context_set_image(im);
-   imlib_context_set_drawable(pmap);
-   imlib_render_image_on_drawable(0, 0);
-   pict = XRenderCreatePicture(disp, pmap, pictfmt, 0, 0);
-   XFreePixmap(disp, pmap);
-
    if (d->curs != NoXID)
       XFreeCursor(disp, d->curs);
-   d->curs = XRenderCreateCursor(disp, pict, w / 2, h / 2);
-   XRenderFreePicture(disp, pict);
+   d->curs = EImageDefineCursor(im, w / 2, h / 2);
 
    XDefineCursor(disp, win, d->curs);
 }

-- 


Reply via email to