Closed
Bug 444498
Opened 16 years ago
Closed 12 years ago
windowless plugin painting should only composite the dirty rect
Categories
(Core :: Graphics, defect)
Tracking
()
RESOLVED
WORKSFORME
People
(Reporter: karlt, Assigned: karlt)
Details
Attachments
(1 file)
8.76 KB,
patch
|
Details | Diff | Splinter Review |
Currently X11 windowless plugin painting uses gfxXlibNativeRenderer on the whole plugin rect even when only a portion needs repainting. The plugin is only asked to paint the dirty rect of the renderer's rect so when cairo_draw_with_xlib takes the fast path there should not be a performance impact with the current behavior (provided the plugin pays attention to the dirty rect). The impact on performance will be significant when cairo_draw_with_xlib takes the slow path, and does math on a pixmap and image surfaces the size of the renderer's rect. Since bug 430450 is fixed, the only cases that I know where this slow path is hit is with non-translation transformations, non-rectangular clip regions, or non-unit opacity.
Assignee | ||
Comment 1•16 years ago
|
||
This is a possible solution but there is one issue: gfxXlibNativeRenderer::NativeDraw does not get notified of clip regions outside the rendering region. If we keep this behavior then NativeDraw should assume that there could be surrounding clips and therefore _require_ plugins to clip their drawing to the dirty rect. That is what is done in this patch but there's an outside chance that unnecessarily forcing a smaller clip rect might impact performance on some plugins. nsNativeThemeGTK::DrawWidgetBackground only uses gfxXlibNativeRenderer on the dirty rect and comments indicate that Clearlooks doesn't clip to the dirty rect, but I'm not aware of problems due to painting outside clip rects outside the dirty rect. Perhaps that is because usually the clip rect corresponds to the edge of a surface and so it is not possible to draw outside the clip rect? (Similar issues were discussed in bug 333250.)
Assignee | ||
Comment 2•12 years ago
|
||
This looks like its fixed in the OOP implementation, at least.
Status: ASSIGNED → RESOLVED
Closed: 12 years ago
Resolution: --- → WORKSFORME
You need to log in
before you can comment on or make changes to this bug.
Description
•