gdiplus: Store the image type on a Graphics object in case the image is freed.
This commit is contained in:
parent
edea85dea6
commit
7b004c1714
|
@ -154,6 +154,7 @@ struct GpGraphics{
|
||||||
BOOL owndc;
|
BOOL owndc;
|
||||||
BOOL alpha_hdc;
|
BOOL alpha_hdc;
|
||||||
GpImage *image;
|
GpImage *image;
|
||||||
|
ImageType image_type;
|
||||||
SmoothingMode smoothing;
|
SmoothingMode smoothing;
|
||||||
CompositingQuality compqual;
|
CompositingQuality compqual;
|
||||||
InterpolationMode interpolation;
|
InterpolationMode interpolation;
|
||||||
|
|
|
@ -2195,6 +2195,9 @@ GpStatus graphics_from_image(GpImage *image, GpGraphics **graphics)
|
||||||
(*graphics)->hwnd = NULL;
|
(*graphics)->hwnd = NULL;
|
||||||
(*graphics)->owndc = FALSE;
|
(*graphics)->owndc = FALSE;
|
||||||
(*graphics)->image = image;
|
(*graphics)->image = image;
|
||||||
|
/* We have to store the image type here because the image may be freed
|
||||||
|
* before GdipDeleteGraphics is called, and metafiles need special treatment. */
|
||||||
|
(*graphics)->image_type = image->type;
|
||||||
(*graphics)->smoothing = SmoothingModeDefault;
|
(*graphics)->smoothing = SmoothingModeDefault;
|
||||||
(*graphics)->compqual = CompositingQualityDefault;
|
(*graphics)->compqual = CompositingQualityDefault;
|
||||||
(*graphics)->interpolation = InterpolationModeBilinear;
|
(*graphics)->interpolation = InterpolationModeBilinear;
|
||||||
|
@ -2389,7 +2392,7 @@ GpStatus WINGDIPAPI GdipDeleteGraphics(GpGraphics *graphics)
|
||||||
if(!graphics) return InvalidParameter;
|
if(!graphics) return InvalidParameter;
|
||||||
if(graphics->busy) return ObjectBusy;
|
if(graphics->busy) return ObjectBusy;
|
||||||
|
|
||||||
if (graphics->image && graphics->image->type == ImageTypeMetafile)
|
if (graphics->image && graphics->image_type == ImageTypeMetafile)
|
||||||
{
|
{
|
||||||
stat = METAFILE_GraphicsDeleted((GpMetafile*)graphics->image);
|
stat = METAFILE_GraphicsDeleted((GpMetafile*)graphics->image);
|
||||||
if (stat != Ok)
|
if (stat != Ok)
|
||||||
|
|
Loading…
Reference in New Issue