On Thu, Jan 04, 2024 at 06:27:01PM +0100, Florian Weimer wrote:
> The pcb-rnd package contains a call:
> 
> XRenderCreatePicture(display, lpm->img_scaled, 
> XRenderFindVisualFormat(display, DefaultVisual(display, screen)), 0, 0);
> 
> The issue here is that lpm->img_scaled is an XImage *, but
> XRenderCreatePicture expected a Drawable as its second argument.
> 
> Any idea how to turn an XImage into a Drawable?

After digging through the Xlib sources a bit: an XImage is a
Xlib-specific struct that abstracts some manipulation functions. Unlike
a Drawable which exists on the protocol. You don't do anything with an
XImage except eventually rendering it to a Drawable.

So in this case - I guess look for where the lpm->img_scale is used on a
drawable and assume that's the drawable you want to use for the XRender
call. Which may or may not be lpm->pm_scaled in this case, I don't know
what the code does but it looks like that's the drawable the image
renders to.

> Not sure how this currently works, but GCC 14 refuse to compile this, as
> a C type error (using a pointer as an integer).

It cannot currently work. From XRenderCreatePicture() [1]:
  req->drawable = (CARD32) drawable;

which means that (parts of) the pointer value is sent to the server as
XID and the server should return BadDrawable unless you're really
(un)lucky with your pointer value.

Cheers,
  Peter

[1] 
https://gitlab.freedesktop.org/xorg/lib/libxrender/-/blob/master/src/Picture.c?ref_type=heads#L91
--
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to