Bug 678269

Summary: NULL cairo surface in draw event
Product: [Fedora] Fedora Reporter: Martin Stransky <stransky>
Component: firefoxAssignee: Gecko Maintainer <gecko-bugs-nobody>
Status: CLOSED NOTABUG QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 15CC: gecko-bugs-nobody, jhorak, mclasen
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-04-15 04:25:04 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Martin Stransky 2011-02-17 11:01:04 UTC
Description of problem:

cairo_t in gtk3 draw event does not have a valid target. cairo_get_target(cr) returns null.

Version-Release number of selected component (if applicable):
gtk3-3.0.0-1.fc15.i686
cairo-1.10.2-3.fc15.i686

How reproducible:
Not sure. I work on firefox4 gtk3 port and it happens here.

Additional info:
gboolean
expose_event_cb(GtkWidget *widget, cairo_t *cr)
{
    cairo_surface_t* target = cairo_get_target(cr);
    assert(target);

- the code asserts here. But if I stop it in gdb, then:

(gdb) p	target
$1 = (cairo_surface_t *) 0x0
(gdb) p	/x cairo_get_target(cr)
$3 = 0xb3574680

It looks like the cairo surface is somehow created when the code is evaluated in gdb.

Comment 1 Martin Stransky 2011-02-17 15:04:22 UTC
FYI. cairo_status(cr) returns CAIRO_STATUS_SUCCESS before cairo_get_target() call.

Comment 2 Martin Stransky 2011-02-17 15:32:21 UTC
Seems to be caused by internal/system cairo mix inside firefox. But it's still strange somehow ...

Comment 3 Matthias Clasen 2011-04-14 23:29:57 UTC
I don't see how this is a gtk3 problem, really.

Comment 4 Christopher Aillon 2011-04-15 04:25:04 UTC
Our package doesn't even have support for gtk3 in the sources, let alone built.  It's still somewhat experimental code that has yet to be merged upstream, so closing this out I guess.  Martin, reopen if you disagree.