mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 777700 - Part 1: Add a way to check validity of SourceSurfaces. r=jrmuizel
This commit is contained in:
parent
acd3d18d8f
commit
69cb6d9312
@ -303,6 +303,13 @@ public:
|
|||||||
virtual IntSize GetSize() const = 0;
|
virtual IntSize GetSize() const = 0;
|
||||||
virtual SurfaceFormat GetFormat() const = 0;
|
virtual SurfaceFormat GetFormat() const = 0;
|
||||||
|
|
||||||
|
/* This returns false if some event has made this source surface invalid for
|
||||||
|
* usage with current DrawTargets. For example in the case of Direct2D this
|
||||||
|
* could return false if we have switched devices since this surface was
|
||||||
|
* created.
|
||||||
|
*/
|
||||||
|
virtual bool IsValid() const { return true; }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This function will get a DataSourceSurface for this surface, a
|
* This function will get a DataSourceSurface for this surface, a
|
||||||
* DataSourceSurface's data can be accessed directly.
|
* DataSourceSurface's data can be accessed directly.
|
||||||
|
@ -34,6 +34,12 @@ SourceSurfaceD2D::GetFormat() const
|
|||||||
return mFormat;
|
return mFormat;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
SourceSurfaceD2D::IsValid() const
|
||||||
|
{
|
||||||
|
return mDevice == Factory::GetDirect3D10Device();
|
||||||
|
}
|
||||||
|
|
||||||
TemporaryRef<DataSourceSurface>
|
TemporaryRef<DataSourceSurface>
|
||||||
SourceSurfaceD2D::GetDataSurface()
|
SourceSurfaceD2D::GetDataSurface()
|
||||||
{
|
{
|
||||||
@ -68,6 +74,7 @@ SourceSurfaceD2D::InitFromData(unsigned char *aData,
|
|||||||
}
|
}
|
||||||
|
|
||||||
DrawTargetD2D::mVRAMUsageSS += GetByteSize();
|
DrawTargetD2D::mVRAMUsageSS += GetByteSize();
|
||||||
|
mDevice = Factory::GetDirect3D10Device();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -103,6 +110,7 @@ SourceSurfaceD2D::InitFromTexture(ID3D10Texture2D *aTexture,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
aTexture->GetDevice(byRef(mDevice));
|
||||||
DrawTargetD2D::mVRAMUsageSS += GetByteSize();
|
DrawTargetD2D::mVRAMUsageSS += GetByteSize();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -22,6 +22,8 @@ public:
|
|||||||
virtual SurfaceType GetType() const { return SURFACE_D2D1_BITMAP; }
|
virtual SurfaceType GetType() const { return SURFACE_D2D1_BITMAP; }
|
||||||
virtual IntSize GetSize() const;
|
virtual IntSize GetSize() const;
|
||||||
virtual SurfaceFormat GetFormat() const;
|
virtual SurfaceFormat GetFormat() const;
|
||||||
|
virtual bool IsValid() const;
|
||||||
|
|
||||||
virtual TemporaryRef<DataSourceSurface> GetDataSurface();
|
virtual TemporaryRef<DataSourceSurface> GetDataSurface();
|
||||||
|
|
||||||
ID2D1Bitmap *GetBitmap() { return mBitmap; }
|
ID2D1Bitmap *GetBitmap() { return mBitmap; }
|
||||||
@ -41,6 +43,8 @@ private:
|
|||||||
uint32_t GetByteSize() const;
|
uint32_t GetByteSize() const;
|
||||||
|
|
||||||
RefPtr<ID2D1Bitmap> mBitmap;
|
RefPtr<ID2D1Bitmap> mBitmap;
|
||||||
|
// We need to keep this pointer here to check surface validity.
|
||||||
|
RefPtr<ID3D10Device> mDevice;
|
||||||
SurfaceFormat mFormat;
|
SurfaceFormat mFormat;
|
||||||
IntSize mSize;
|
IntSize mSize;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user