agl-shell-desktop protocol request set_app_property ignores output argument

Fixed

Description

As it can be seen from logs attached to SPEC-4119, I am using set_app_property to put popup surface to HDMI-A-1 output:

[1498813.338] zxdg_output_manager_v1@4.get_xdg_output(new id zxdg_output_v1@3, wl_output@6) [1498813.401] -> zxdg_output_v1@3.logical_position(1080, 0) [1498813.447] -> zxdg_output_v1@3.logical_size(1920, 1080) [1498813.494] -> zxdg_output_v1@3.name("HDMI-A-1") [1498813.525] -> zxdg_output_v1@3.done() [1498814.070] agl_shell_desktop@7.set_app_property("ivi-to-ic", 0, 640, 180, 0, 0, 640, 720, wl_output@6)

But it is displayed on the HDMI-A-2. I have used following commands to collect screenshots:

sh-5.0# agl-screenshooter -l Output 'HDMI-A-2', desc: '(null)' Output 'HDMI-A-1', desc: '(null)' sh-5.0# agl-screenshooter -o HDMI-A-2 sh-5.0# mv agl-screenshot-2020-06-29_03-11-17.png HDMI-A-2.png sh-5.0# agl-screenshooter -o HDMI-A-1 sh-5.0# mv agl-screenshot-2020-06-29_03-11-37.png HDMI-A-1.png

As you can see there is black rectangle on HDMI-A-2. This is my popup window.

I think reason of such behavior it that HDMI-A-2 comes first in outputs list.

Environment

None

Attachments

2

Activity

Show:

Walt Miner 
December 8, 2021 at 3:47 PM

Close for LL 12.1.0

Marius Vlad 
November 11, 2021 at 10:28 AM

This has been resolved into master. The output should now be respected. I believe the black surface is something related to the client, not updating its content. Please re-open if you believe that is not the case.

Marius Vlad 
November 5, 2021 at 5:53 PM

PS, added a patch to correct the placement.

Marius Vlad 
November 5, 2021 at 3:01 PM

You're correct that the output is not really respected, but this seems to be really unrelated to the fact that the surface doesn't appear to be drawn at all in your screenshots.

I'm looking into a solution, most likely need to compute an output region to place to surface/view, after passing the x and y values, but meanwhile you should be able to position it wherever you want by specifying the x and y values, such that you sum up both outputs on the X axis and derive from that where you want your window to be.

So for for instance, assuming you have two outputs with 1920 as width, you'll get a 3840 combined width, so if you want to place it on the second one, just add 1920+x and the compositor should place it accordingly.

Circling back to the surface not being drawn, you'll need to attach the protocol. It seems to be you're not really drawing anything to it, just by looking at it, but the protocol debug should be more helpful.

Details

Assignee

Reporter

Labels

Components

Priority

Created November 4, 2021 at 10:24 PM
Updated December 8, 2021 at 3:47 PM
Resolved November 11, 2021 at 10:28 AM

Flag notifications