Bug 116646

Summary: [Cairo] Fail to draw box-shadow if origin is very big and scale is not 1.
Product: WebKit Reporter: Yonggeol Jung <yg48.jung>
Component: Layout and RenderingAssignee: Nobody <webkit-unassigned>
Status: UNCONFIRMED    
Severity: Normal CC: bugs-noreply, cdumez, commit-queue, d-r, hyunki.baik, igor.oliveira, laszlo.gombos, mrobinson
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Other   
OS: Linux   
Attachments:
Description Flags
testcase
none
Patch
none
Patch
beidson: review-
callstack none

Yonggeol Jung
Reported 2013-05-22 19:37:49 PDT
When try to draw box-shadow to big origin and page scale factor is not 1, it fails to draw.
Attachments
testcase (550 bytes, text/html)
2013-05-22 19:43 PDT, Yonggeol Jung
no flags
Patch (1.96 KB, patch)
2013-05-22 19:45 PDT, Yonggeol Jung
no flags
Patch (1.96 KB, patch)
2013-05-22 19:47 PDT, Yonggeol Jung
beidson: review-
callstack (50.23 KB, application/octet-stream)
2013-05-30 19:23 PDT, Yonggeol Jung
no flags
Yonggeol Jung
Comment 1 2013-05-22 19:43:17 PDT
Created attachment 202636 [details] testcase After clicking "Scroll" button, you can see white circle with blue shadow-box. But webkit-efl port doesn't display this.
Yonggeol Jung
Comment 2 2013-05-22 19:45:53 PDT
Yonggeol Jung
Comment 3 2013-05-22 19:47:04 PDT
Chris Dumez
Comment 4 2013-05-23 03:59:21 PDT
Comment on attachment 202638 [details] Patch You probably need a test for it (or rebase existing test if already covered).
Yonggeol Jung
Comment 5 2013-05-23 23:16:03 PDT
It's strange. I made some test case for this issue. When running test case using Minibrowser, it's not showing properly but result image file of layout-test shows fine. Maybe the problem is related to repainting. I'll check more.
Martin Robinson
Comment 6 2013-05-28 14:45:17 PDT
Comment on attachment 202638 [details] Patch Can you show the stack trace of the failing call? It probably makes sense to workaround this issue in drawRectShadow, so that it doesn't need to be fixed in every place that calls the method.
Yonggeol Jung
Comment 7 2013-05-30 19:23:57 PDT
Created attachment 203406 [details] callstack This is call stack for the test-case which I uploaded. I caught when "_cairo_matrix_to_pixman_matrix function" returns CAIRO_STATUS_INVALID_MATRIX. // cairo-matrix.c static cairo_status_t_cairo_matrix_to_pixman_matrix () { ... if (_cairo_matrix_has_unity_scale (matrix)) return CAIRO_STATUS_SUCCESS; if (unlikely (fabs (matrix->xx) > PIXMAN_MAX_INT || fabs (matrix->xy) > PIXMAN_MAX_INT || fabs (matrix->x0) > PIXMAN_MAX_INT || fabs (matrix->yx) > PIXMAN_MAX_INT || fabs (matrix->yy) > PIXMAN_MAX_INT || fabs (matrix->y0) > PIXMAN_MAX_INT)) { return _cairo_error (CAIRO_STATUS_INVALID_MATRIX); // => here } .... }
Brady Eidson
Comment 8 2016-05-24 21:38:32 PDT
Comment on attachment 202638 [details] Patch r- to clear stale patches from the review queue
Note You need to log in before you can comment on or make changes to this bug.