mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 19:39:18 +02:00
customdrawn-android: Fixes the screen blinking
git-svn-id: trunk@33839 -
This commit is contained in:
parent
9063d804bf
commit
3a5fb38765
@ -93,7 +93,7 @@ begin
|
|||||||
FillChar(struct, SizeOf(TPaintStruct), 0);
|
FillChar(struct, SizeOf(TPaintStruct), 0);
|
||||||
|
|
||||||
// Prepare the non-native image and canvas
|
// Prepare the non-native image and canvas
|
||||||
UpdateControlLazImageAndCanvas(lCurForm.Image, lCurForm.Canvas, Width, Height, clfRGBA32, pixels);
|
UpdateControlLazImageAndCanvas(lCurForm.Image, lCurForm.Canvas, Width, Height, clfRGBA32, pixels, True, False);
|
||||||
|
|
||||||
struct.hdc := HDC(lCurForm.Canvas);
|
struct.hdc := HDC(lCurForm.Canvas);
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ procedure HideForm(ACDForm: TCDNonNativeForm);
|
|||||||
|
|
||||||
procedure UpdateControlLazImageAndCanvas(var AImage: TLazIntfImage;
|
procedure UpdateControlLazImageAndCanvas(var AImage: TLazIntfImage;
|
||||||
var ACanvas: TLazCanvas; AWidth, AHeight: Integer; AFormat: TUpdateLazImageFormat;
|
var ACanvas: TLazCanvas; AWidth, AHeight: Integer; AFormat: TUpdateLazImageFormat;
|
||||||
AData: Pointer = nil);
|
AData: Pointer = nil; AForceUpdate: Boolean = False; AFreeImageOnUpdate: Boolean = True);
|
||||||
procedure RenderChildWinControls(var AImage: TLazIntfImage;
|
procedure RenderChildWinControls(var AImage: TLazIntfImage;
|
||||||
var ACanvas: TLazCanvas; ACDControlsList: TFPList);
|
var ACanvas: TLazCanvas; ACDControlsList: TFPList);
|
||||||
//procedure RenderWinControl(var AImage: TLazIntfImage;
|
//procedure RenderWinControl(var AImage: TLazIntfImage;
|
||||||
@ -128,9 +128,10 @@ begin
|
|||||||
NonNativeForms.Move(lCurIndex, 0);
|
NonNativeForms.Move(lCurIndex, 0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// If AForceUpdate=True then it will update even if the width and height remain the same
|
||||||
procedure UpdateControlLazImageAndCanvas(var AImage: TLazIntfImage;
|
procedure UpdateControlLazImageAndCanvas(var AImage: TLazIntfImage;
|
||||||
var ACanvas: TLazCanvas; AWidth, AHeight: Integer; AFormat: TUpdateLazImageFormat;
|
var ACanvas: TLazCanvas; AWidth, AHeight: Integer; AFormat: TUpdateLazImageFormat;
|
||||||
AData: Pointer = nil);
|
AData: Pointer = nil; AForceUpdate: Boolean = False; AFreeImageOnUpdate: Boolean = True);
|
||||||
var
|
var
|
||||||
lRawImage: TRawImage;
|
lRawImage: TRawImage;
|
||||||
lPixelSize: Byte;
|
lPixelSize: Byte;
|
||||||
@ -140,9 +141,10 @@ begin
|
|||||||
[PtrInt(AImage), PtrInt(ACanvas)]));
|
[PtrInt(AImage), PtrInt(ACanvas)]));
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
// Check if the image needs update
|
// Check if the image needs update
|
||||||
if (AImage = nil) or (AWidth <> AImage.Width) or (AHeight <> AImage.Height) then
|
if (AImage = nil) or (AWidth <> AImage.Width) or (AHeight <> AImage.Height)
|
||||||
|
or AForceUpdate then
|
||||||
begin
|
begin
|
||||||
if (AImage <> nil) then AImage.Free;
|
if (AImage <> nil) and AFreeImageOnUpdate then AImage.Free;
|
||||||
|
|
||||||
lRawImage.Init;
|
lRawImage.Init;
|
||||||
case AFormat of
|
case AFormat of
|
||||||
|
Loading…
Reference in New Issue
Block a user