Bug 36279 - cairo_paint with ARGB32 source doesn't work
Summary: cairo_paint with ARGB32 source doesn't work
Status: RESOLVED FIXED
Alias: None
Product: cairo
Classification: Unclassified
Component: general (show other bugs)
Version: 1.10.2
Hardware: Other All
: medium normal
Assignee: Carl Worth
QA Contact: cairo-bugs mailing list
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-04-15 14:21 UTC by Thomas Jones
Modified: 2011-04-15 19:04 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
source of program that demonstraits brokenness (1.53 KB, text/x-csrc)
2011-04-15 14:21 UTC, Thomas Jones
Details
header with image data for the program to use (29.89 KB, application/x-gzip)
2011-04-15 14:21 UTC, Thomas Jones
Details

Description Thomas Jones 2011-04-15 14:21:02 UTC
Created attachment 45684 [details]
source of program that demonstraits brokenness

As the summary says, happens when drawing to an image surface and possibly with xcb (in a context obtained from GTK it happens, dunno what backend is in use)


I've attached a program that shows how things are broken
Comment 1 Thomas Jones 2011-04-15 14:21:56 UTC
Created attachment 45685 [details]
header with image data for the program to use
Comment 2 Thomas Jones 2011-04-15 14:26:08 UTC
I just pulled some code and image data out of the app that I'm writing that encounters the problem and stuck it in a header, sorry for the nasty big header.


The program outputs in "surf1.png" the bottom surface, the top in "surf2.png", and finally the results of it's drawing in "test.png".

the header looks like this:

int img_width = 199, img_height = 233;
uint8_t data1[] = { ... };
uint8_t data2[] = { ... };
Comment 3 Thomas Jones 2011-04-15 18:35:30 UTC
Also, I know that it works properly on cairo 1.8.10 (with the same versions of every other package on my system, so it's definitely a cairo bug not pixman or something)
Comment 4 Benjamin Otte 2011-04-15 18:50:03 UTC
You need to call cairo_surface_mark_dirty() after memcpy()ing the data, so cairo knows that the image was modified.
Cairo 1.10 is a lot stricter in enforcing this requirement than cairo 1.8 was, which is why it probably worked with older versions.
Comment 5 Thomas Jones 2011-04-15 19:04:05 UTC
Ah I ought to have known that, at the time 1.10 came out I had meant to check my code for that sort of problem, but I never did, then I forgot about it.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.