Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(44)

Side by Side Diff: src/gpu/GrClipMaskManager.cpp

Issue 22173002: Fix a crash on stroking empty paths with nv_path_rendering enabled (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « gyp/tests.gyp ('k') | src/gpu/GrContext.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2012 Google Inc. 3 * Copyright 2012 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 #include "GrClipMaskManager.h" 9 #include "GrClipMaskManager.h"
10 #include "GrAAConvexPathRenderer.h" 10 #include "GrAAConvexPathRenderer.h"
(...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after
684 kAlways_StencilFunc, 684 kAlways_StencilFunc,
685 0xffff, 685 0xffff,
686 0x0000, 686 0x0000,
687 0xffff); 687 0xffff);
688 SET_RANDOM_COLOR 688 SET_RANDOM_COLOR
689 if (Element::kRect_Type == element->getType()) { 689 if (Element::kRect_Type == element->getType()) {
690 *drawState->stencil() = gDrawToStencil; 690 *drawState->stencil() = gDrawToStencil;
691 fGpu->drawSimpleRect(element->getRect(), NULL); 691 fGpu->drawSimpleRect(element->getRect(), NULL);
692 } else { 692 } else {
693 GrAssert(Element::kPath_Type == element->getType()); 693 GrAssert(Element::kPath_Type == element->getType());
694 if (canRenderDirectToStencil) { 694 if (!clipPath->isEmpty()) {
695 *drawState->stencil() = gDrawToStencil; 695 if (canRenderDirectToStencil) {
696 pr->drawPath(*clipPath, stroke, fGpu, false); 696 *drawState->stencil() = gDrawToStencil;
697 } else { 697 pr->drawPath(*clipPath, stroke, fGpu, false);
698 pr->stencilPath(*clipPath, stroke, fGpu); 698 } else {
699 pr->stencilPath(*clipPath, stroke, fGpu);
700 }
699 } 701 }
700 } 702 }
701 } 703 }
702 704
703 // now we modify the clip bit by rendering either the clip 705 // now we modify the clip bit by rendering either the clip
704 // element directly or a bounding rect of the entire clip. 706 // element directly or a bounding rect of the entire clip.
705 drawState->enableState(GrGpu::kModifyStencilClip_StateBit); 707 drawState->enableState(GrGpu::kModifyStencilClip_StateBit);
706 for (int p = 0; p < passes; ++p) { 708 for (int p = 0; p < passes; ++p) {
707 *drawState->stencil() = stencilSettings[p]; 709 *drawState->stencil() = stencilSettings[p];
708 if (canDrawDirectToClip) { 710 if (canDrawDirectToClip) {
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
1002 1004
1003 //////////////////////////////////////////////////////////////////////////////// 1005 ////////////////////////////////////////////////////////////////////////////////
1004 void GrClipMaskManager::releaseResources() { 1006 void GrClipMaskManager::releaseResources() {
1005 fAACache.releaseResources(); 1007 fAACache.releaseResources();
1006 } 1008 }
1007 1009
1008 void GrClipMaskManager::setGpu(GrGpu* gpu) { 1010 void GrClipMaskManager::setGpu(GrGpu* gpu) {
1009 fGpu = gpu; 1011 fGpu = gpu;
1010 fAACache.setContext(gpu->getContext()); 1012 fAACache.setContext(gpu->getContext());
1011 } 1013 }
OLDNEW
« no previous file with comments | « gyp/tests.gyp ('k') | src/gpu/GrContext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698