app_server: special handling for opaque/invisible layers
* Opaque layers (opacity = 255) don't need to use an intermediate bitmap (and everything that comes with it) for drawing at all, they can just directly draw onto the underlying canvas or layer. (WebKit likes to use plenty of opaque layers) * Invisible layers (opacity = 0) can simply be ignored.
This commit is contained in:
@@ -223,6 +223,15 @@ Canvas::ScreenToPenTransform() const GCC_2_NRV(transform)
|
||||
void
|
||||
Canvas::BlendLayer(Layer* layer)
|
||||
{
|
||||
if (layer->Opacity() == 255) {
|
||||
layer->Play(this);
|
||||
layer->ReleaseReference();
|
||||
return;
|
||||
} else if (layer->Opacity() == 0) {
|
||||
layer->ReleaseReference();
|
||||
return;
|
||||
}
|
||||
|
||||
UtilityBitmap* layerBitmap = layer->RenderToBitmap(this);
|
||||
if (layerBitmap == NULL)
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user