mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-18 13:17:29 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
135
gfx/layers/client/SingleTiledContentClient.h
Normal file
135
gfx/layers/client/SingleTiledContentClient.h
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef MOZILLA_GFX_SINGLETILEDCONTENTCLIENT_H
|
||||
#define MOZILLA_GFX_SINGLETILEDCONTENTCLIENT_H
|
||||
|
||||
#include "TiledContentClient.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace layers {
|
||||
|
||||
class ClientTiledPaintedLayer;
|
||||
class ClientLayerManager;
|
||||
|
||||
/**
|
||||
* Provide an instance of TiledLayerBuffer backed by drawable TextureClients.
|
||||
* This buffer provides an implementation of ValidateTile using a
|
||||
* thebes callback and can support painting using a single paint buffer.
|
||||
* Whether a single paint buffer is used is controlled by
|
||||
* gfxPrefs::PerTileDrawing().
|
||||
*/
|
||||
class ClientSingleTiledLayerBuffer
|
||||
: public ClientTiledLayerBuffer
|
||||
, public TextureClientAllocator
|
||||
{
|
||||
virtual ~ClientSingleTiledLayerBuffer() {}
|
||||
public:
|
||||
ClientSingleTiledLayerBuffer(ClientTiledPaintedLayer& aPaintedLayer,
|
||||
CompositableClient& aCompositableClient,
|
||||
ClientLayerManager* aManager);
|
||||
|
||||
// TextureClientAllocator
|
||||
already_AddRefed<TextureClient> GetTextureClient() override;
|
||||
void ReturnTextureClientDeferred(TextureClient* aClient) override {}
|
||||
void ReportClientLost() override {}
|
||||
|
||||
// ClientTiledLayerBuffer
|
||||
void PaintThebes(const nsIntRegion& aNewValidRegion,
|
||||
const nsIntRegion& aPaintRegion,
|
||||
const nsIntRegion& aDirtyRegion,
|
||||
LayerManager::DrawPaintedLayerCallback aCallback,
|
||||
void* aCallbackData,
|
||||
bool aIsProgressive = false) override;
|
||||
|
||||
bool SupportsProgressiveUpdate() override { return false; }
|
||||
bool ProgressiveUpdate(nsIntRegion& aValidRegion,
|
||||
nsIntRegion& aInvalidRegion,
|
||||
const nsIntRegion& aOldValidRegion,
|
||||
BasicTiledLayerPaintData* aPaintData,
|
||||
LayerManager::DrawPaintedLayerCallback aCallback,
|
||||
void* aCallbackData) override
|
||||
{
|
||||
MOZ_ASSERT(false, "ProgressiveUpdate not supported!");
|
||||
return false;
|
||||
}
|
||||
|
||||
void ResetPaintedAndValidState() override {
|
||||
mPaintedRegion.SetEmpty();
|
||||
mValidRegion.SetEmpty();
|
||||
mTile.DiscardBuffers();
|
||||
}
|
||||
|
||||
const nsIntRegion& GetValidRegion() override {
|
||||
return mValidRegion;
|
||||
}
|
||||
|
||||
bool IsLowPrecision() const override {
|
||||
return false;
|
||||
}
|
||||
|
||||
void ReleaseTiles();
|
||||
|
||||
void DiscardBuffers();
|
||||
|
||||
SurfaceDescriptorTiles GetSurfaceDescriptorTiles();
|
||||
|
||||
void ClearPaintedRegion() {
|
||||
mPaintedRegion.SetEmpty();
|
||||
}
|
||||
|
||||
private:
|
||||
TileClient mTile;
|
||||
|
||||
nsIntRegion mPaintedRegion;
|
||||
nsIntRegion mValidRegion;
|
||||
bool mWasLastPaintProgressive;
|
||||
|
||||
/**
|
||||
* While we're adding tiles, this is used to keep track of the position of
|
||||
* the top-left of the top-left-most tile. When we come to wrap the tiles in
|
||||
* TiledDrawTarget we subtract the value of this member from each tile's
|
||||
* offset so that all the tiles have a positive offset, then add a
|
||||
* translation to the TiledDrawTarget to compensate. This is important so
|
||||
* that the mRect of the TiledDrawTarget is always at a positive x/y
|
||||
* position, otherwise its GetSize() methods will be broken.
|
||||
*/
|
||||
gfx::IntPoint mTilingOrigin;
|
||||
gfx::IntSize mSize;
|
||||
gfxImageFormat mFormat;
|
||||
};
|
||||
|
||||
class SingleTiledContentClient : public TiledContentClient
|
||||
{
|
||||
public:
|
||||
SingleTiledContentClient(ClientTiledPaintedLayer& aPaintedLayer,
|
||||
ClientLayerManager* aManager);
|
||||
|
||||
protected:
|
||||
~SingleTiledContentClient()
|
||||
{
|
||||
MOZ_COUNT_DTOR(SingleTiledContentClient);
|
||||
|
||||
mTiledBuffer->ReleaseTiles();
|
||||
}
|
||||
|
||||
public:
|
||||
static bool ClientSupportsLayerSize(const gfx::IntSize& aSize, ClientLayerManager* aManager);
|
||||
|
||||
virtual void ClearCachedResources() override;
|
||||
|
||||
virtual void UpdatedBuffer(TiledBufferType aType) override;
|
||||
|
||||
virtual ClientTiledLayerBuffer* GetTiledBuffer() override { return mTiledBuffer; }
|
||||
virtual ClientTiledLayerBuffer* GetLowPrecisionTiledBuffer() override { return nullptr; }
|
||||
|
||||
private:
|
||||
RefPtr<ClientSingleTiledLayerBuffer> mTiledBuffer;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue