update screen occurs, when the updated object is not at the top order.

134 views
asked Apr 30, 2018 in Embedded Wizard Studio by Jinho Sung

Hello.

My EmWi version is 8.20.

I'm waiting for the release 9.0.

So, I didnot upgrade to the 8.30

 

My main screen has a blinking text.

And, when the key 1 is pressed, the new window is displayed at topmost position.

The size of new windows is the same as the main screen.

When the key 3 is pressed. the new windows is removed.

 

Tracking the screen updates displayed the blinking text was updated, when the main screen is covered by the new window.

 

I read the release note of 8.3.  Is this phenomenon related to the bug of 8.2?

Mosaic: The update routine in Mosaic has been corrected to not perform unnecessary updates.

 

I attached the file link.

 

Thanks and best regards.

Jinho.

 

http://attach.mail.daum.net/bigfile/v1/urls/d/-uWIq1LOHnq_M9WNi-XMZjZELKY/Op8DdSfDzOagYS7aN6efCw

1 Answer

0 votes
answered Apr 30, 2018 by Manfred Schweyer
Hi Jinho,

the bahavior is correct, because the blinking text causes an invalidation of this area (which is shown by track screen updates).

Due to the fact that the text is not visible (because it is completely covered by another screen), the drawing instructions for the text will be removed from the Graphics Engine. But first this area has to be processed. The text item has no knowledge about other components that may overlap or conceal it.

For example, when the overlapping screen is semi-transparent, the processing of the blinking text is the same - but in this case the drawing of the text is necessary. In case of an opaque overlapping screen, the drawing operations will be removed.

There is no difference between 8.2, 8.3 and 9.0 in this aspect.

I hope this answers your question.

Best regards,

Manfred.
commented Apr 30, 2018 by Jinho Sung
Dear Manfred.

 

In GenericEndUpdate function,

I added the printf("Real LCD update %d %d %d %d\n",aX,aY,aWidth,aHeight);

 

And, the drawing instruction for text seemed not to be removed.

"Real LCD update... " is always displayed.

 

Thanks and best regards.

Jinho.
commented Apr 30, 2018 by Manfred Schweyer
Hi Jinho,

yes, the area will be drawn, but the Graphics Engine will remove the drawing instruction for the text item, because it is completely covered by another view.

This means, the Mosaic framework will evaluate all views and prepare the instructions for the Graphics Engine. The Graphics Engine will then process all instructions and optimize them in order to remove all unnecessary drawing instructions.

Example: You have a text object that is completly covered by an opaque rectangle. If the text object causes an invalid area (e.g. by changing the text or by changing the Visible property), the Mosaic framework will create drawing instructions for all views within this area: This means, first the text has to be drawn, then the rectangle has to be drawn. The Graphics Engine will evaluate the sequence of drawing instructions and remove the text drawing insruction, because it has no relevance for the final appearance. As a result, only the rectangle will be drawn.

In this case, the final appearance on the screen will not change, but this cannot be foreseen by the Mosaic.

Best regards,

Manfred.
commented May 2, 2018 by Jinho Sung
Dear Manfred.

In my situation, all the blinking objects are covered by solid black rectangle.

But, every update of my unseen objest makes the Graphics Engine call the GenericEndUpdate function.

The color of solid black rectange is #000000FF, and the alphablended property is set to false.

Is there any point which I miss?

Thanks and best regards.
commented May 2, 2018 by Manfred Schweyer
Dear Jinho,

the blinking objects are causing the invalidation of their regions. The Graphics Engine will remove the drawing instructions of all invisible objects, but the drawing instruction for the solid black rectangle will be executed. After the black rectangle is drawn, the GenericEndUpdate function will be called.

The visible result on the screen will not change - but this cannot be foreseen by the framework.

Best regards,

Manfred.

Ask Embedded Wizard

Welcome to the question and answer site for Embedded Wizard users and UI developers.

Ask your question and receive answers from the Embedded Wizard support team or from other members of the community!

Embedded Wizard Website | Privacy Policy | Imprint

...