Explorar o código

unload originals for faster saving

circular17 %!s(int64=6) %!d(string=hai) anos
pai
achega
0926406b63
Modificáronse 1 ficheiros con 12 adicións e 0 borrados
  1. 12 0
      lazpaint/image/uimagestate.pas

+ 12 - 0
lazpaint/image/uimagestate.pas

@@ -745,9 +745,21 @@ begin
 end;
 
 procedure TImageState.SaveToStreamAs(AStream: TStream; AFormat: TBGRAImageFormat);
+var
+  i: Integer;
+  curGuid: TGuid;
 begin
   if LayeredBitmap <> nil then
+  begin
+    if AFormat = ifLazPaint then
+    begin
+      curGuid := LayeredBitmap.LayerOriginalGuid[GetCurrentLayerIndex];
+      for i := 0 to LayeredBitmap.OriginalCount-1 do
+        if LayeredBitmap.OriginalGuid[i] <> curGuid then
+          LayeredBitmap.UnloadOriginal(i);
+    end;
     LayeredBitmap.SaveToStreamAs(AStream, SuggestImageExtension(AFormat));
+  end;
 end;
 
 procedure TImageState.SaveOriginalToStream(AStream: TStream);