Jump to content
Stéphane Wierzbicki

Delphi 12 - Action Bar Menu painting issues with RDS

Recommended Posts

31 minutes ago, Stéphane Wierzbicki said:

2023-11-27_10-43-08.gif

This has nothing to do with Delphi, in fact this behavior is observed with every software do animation when used with RDP (RDS)

the problem is simple, RDP screen core process will detect screen changes at some intervals, then send these parts, so it goes from full screen update to small part, these animation happens at high frame rate, so either RDP didn't capture the changes because it fall in between its frame capturing time and it did look like was minimum change and not worth updating, or due the high change rate the RDP throttled the update and skipped updating these parts.

 

Recommendation : if possible detect RDP session (RDS as you called it) and disable all animation, this will enhance the fps and prevent what seems like wrong rendering, also if you have shadows, blurring and gradient colors then disabling them will enhance the speed a lot and require less traffic due the smaller images with higher compression without losing quality.

Share this post


Link to post

Hi Kas Ob.

 

I'm sorry, but this is clearly a defect/change on the VCL side.

The very same application compiled with Delphi 11.3 is working as expected.

When compiled with Delphi 12, menu is messed.

Edited by Stéphane Wierzbicki

Share this post


Link to post

Delphi 12 has some changes related to the DoubleBuffered property and RDM.

Try to play with form's DoubleBuffered and the newly introduced DoubleBufferedMode properties.

 

Share this post


Link to post

It is an ActionMainMenuBar and the odd behavior, the mouse over highlighting makes menu entries darker and darker each time the mouse passes over them, is apparent in the Windows Sandbox after copying the project's EXE there. The form already has DoubleBuffered set to false which is all the new DoubleBufferedMode does to help over a RD connection. Changing the form width after the menu is darkened makes the menu redraw and it does so correctly. 

 

Looking at differences in Vcl.ActnMenus.pas between 11.x and 12 the draw code changed to add some styling and MDI support however reverting changes doesn't have any effect even in TCustomMDIMenuButton.Paint. 

 

A TMainMenu does not have the odd behaviour. 

Edited by Brian Evans

Share this post


Link to post

Has anybody a solution for this problem? We're encountering this problem too with Delphi 12.

The Quality Central is at this moment read only, so that you can't report any bugs to Embarcadero.

Share this post


Link to post

Was not able to find a solution. Did a build with Delphi 12 patch 1 and tested in a Windows Sandbox and the issue persists. 

 

 

Edited by Brian Evans

Share this post


Link to post

My VPS clients reported flickering, which I have cured withe the following code:

 

// Fix RDP flickering in Delphi 12
  if application.InRemoteSession then
    if application.SingleBufferingInRemoteSessions then
      application.SingleBufferingInRemoteSessions := false;

 

I apologise for not recording the source of this tip in the comment.

 

I have since discovered that the progress bars from some 3rd parties I use are no longer refreshing as they should. 100% but not quit 100% :0)

 

2107852457_Bildschirmfoto2024-07-26um17_55_31.thumb.png.13e5378d3f91af545e77d58dd0e03525.png

  • Like 1

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×