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:
Julian Harnath
2015-08-03 18:50:58 +02:00
parent d727d0743b
commit 3d12d3a832
+9
View File
@@ -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;