Open Bug 1891367 Opened 2 years ago Updated 1 year ago

fullscreen isn't fullscreen, it's screen.height-1

Categories

(Core :: Widget: Gtk, defect, P3)

Firefox 124
defect

Tracking

()

UNCONFIRMED

People

(Reporter: support, Unassigned, NeedInfo)

Details

Attachments

(5 files)

User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:124.0) Gecko/20100101 Firefox/124.0

Steps to reproduce:

Watching Netflix switching to fullscreen via button and/or F11

Actual results:

the playbackwindow grows to fullscreen, but the TOP Pixelline ( Y=1 (not 0) as it looks ) shows the Desktopbackground.

The attached picture shows the entire desktop display, move to Y=1 and zoom in, you will notice a blue textured line. This should not be there at all.

This happens repeatable every time for a while now.

WORKAROUND: switch Background in Desktop to black, so it does not disturb so much.

Expected results:

no top background should be visible.

The Bugbug bot thinks this bug should belong to the 'Core::Graphics' component, and is moving the bug to that component. Please correct in case you think the bot is wrong.

Component: Untriaged → Graphics
Product: Firefox → Core

Is this actually Graphics?

Blocks: gfx-triage

If you asked "me":

yes, it's a real screenshot on a dual monitor 1920x1080 Fedora Linux 38 system. The blueline comes from the "blue sea" background of the desktop.

If your asked a co-dev:

could be a misaligned drawing pane, as the window frame before the fullscreen() does perfectly max out the screen, with no visual blue line on top or in the frame.

I would search first in the algorithm that resizes the image from window framed to borderless. It looks like it stops resizing when it hits Y=1 instead of Y=0.

BTW: It's a regression as this worked until FF ~115? I just did not report it then, as i hoped it would be a temporary bug, as it's easy detectable.

Bob was asking which Firefox team could best address this problem; "Graphics" is the name of the team.

Component: Graphics → Widget: Gtk

Hi, thanks for filing this, could you copy paste or attach to this bug the contents of your about:support page?

Flags: needinfo?(support)
Attached file ff-about-support.txt
Flags: needinfo?(support)

(In reply to support from comment #3)

BTW: It's a regression as this worked until FF ~115? I just did not report it then, as i hoped it would be a temporary bug, as it's easy detectable.

Can you use mozregression tool to find broken commit?
https://fedoraproject.org/wiki/How_to_debug_Firefox_problems#Use_Mozregression_tool
Thanks.

Flags: needinfo?(support)
Priority: -- → P3

The testtool does not work:

0:02.88 INFO: Using local file: $home/.mozilla/mozregression/persist/2023-01-16--mozilla-central--firefox-111.0a1.en-US.linux-x86_64.tar.bz2
0:02.88 INFO: Running mozilla-central build for 2023-01-16
0:10.27 INFO: Launching /tmp/tmp7rxpll13/firefox/firefox
0:10.27 INFO: Application command: /tmp/tmp7rxpll13/firefox/firefox -profile /tmp/tmpdxkzbpu5.mozrunner
0:10.27 INFO: application_buildid: 20230116211903
0:10.27 INFO: application_changeset: 23c1be504632a25d402332e7db55eb5699509d9f
0:10.27 INFO: application_name: Firefox
0:10.27 INFO: application_repository: https://hg.mozilla.org/mozilla-central
0:10.27 INFO: application_version: 111.0a1
Was this nightly build good, bad, or broken? (type 'good', 'bad', 'skip', 'retry' or 'exit' and press Enter):
0:10.59 WARNING: Process exited with code 11
retry
0:22.63 INFO: Running mozilla-central build for 2023-01-16
0:30.08 INFO: Launching /tmp/tmp5pl7d08_/firefox/firefox
0:30.08 INFO: Application command: /tmp/tmp5pl7d08_/firefox/firefox -profile /tmp/tmpx8py4mhi.mozrunner
0:30.08 INFO: application_buildid: 20230116211903
0:30.08 INFO: application_changeset: 23c1be504632a25d402332e7db55eb5699509d9f
0:30.08 INFO: application_name: Firefox
0:30.08 INFO: application_repository: https://hg.mozilla.org/mozilla-central
0:30.08 INFO: application_version: 111.0a1
Was this nightly build good, bad, or broken? (type 'good', 'bad', 'skip', 'retry' or 'exit' and press Enter):
0:30.40 WARNING: Process exited with code 11
exit
0:48.39 INFO: To resume, run:

It does not start the tested ff instance.

Even if it would, every tested FF would also need widevine plugin, h264 plugin etc. to work with NetFlix. It would help a lot if a copy of the regular profile would be made and used as all this is already there.

Flags: needinfo?(support)

(In reply to support from comment #8)

Even if it would, every tested FF would also need widevine plugin, h264 plugin etc. to work with NetFlix. It would help a lot if a copy of the regular profile would be made and used as all this is already there.

The command-line option "--profile-persistence=clone-first" is useful in this situation. If you can get mozregression working at all, then on the first Firefox launch you can setup your profile completely, then quit Firefox and choose "retry" at the mozregression prompt. From that point on, you'll be using the profile you setup on the first run and all your changes will persist for the rest of the mozregression bisection.

Severity: -- → S2

Would you please try mozregression again with the "--profile-persistence=clone-first" argument?

Flags: needinfo?(support)
Assignee: nobody → ahale

I'm not able to reproduce this on Fedora 39 running Wayland on AMD Radeon. Netflix full-screens just fine.

Are you able to reproduce this if you disable one or the other display?

I'm not able to reproduce this on a dual-monitor configuration, either.

So , after testing for a week now, i come to this result:

a) it's not a permanent issue, which will make it very hard to track down.
It's permanent on the boot it appears. rebooting helps to fix it.

b) I'm pretty sure, dual display is not relevant for it.

c) it happens in different recent versions, but: if it happens,it happens independend from the version. This may be a hint to track it down.

Otherwise i did not find anything out that may help.

Flags: needinfo?(support)

Would it be possible to try on a different window manager than what you're running now with Cinnamon?

Flags: needinfo?(support)

i reseted cinnamon, i restarted the entire desktop session : no change

but i noticed something interesting:

The Netflix Mainwindow, where you select your movie is fullscreen too, but does not have the issue.
the actual streaming has that 1 pixel offset only.

Just for you, i will restart the desktop session with gnome and send another answere afterwards.

Flags: needinfo?(support)

after using ff with gnome, it took a while as gnome has a black theme as default, but after changing that to yellow, we got a hit:

it's independent from Desktop Environment

Maybe we have something here: check the image i upload now.

use a gfx tool and zoom line 1 .. it's not yellow as it looked...it's transparent.

No idea why i could get the background captured in cinnamon, maybe because the panel is on the bottom, not on the top, but "transparent" could be a hint.

Info: the issues survives a reboot with a kernel change ( which means here: fresh compiled nvidia drivers )

:::::::: UPDATE ::::::::::

It's a SCALING ISSUE

Target display size: 1920x1080

source material in Netflix : 1280x720 => OK no background line .

source material in Netflix : 960x540 => not ok !!! 1 line on top with background

All source ratios are 16:9 , same as the destination ratio.

to match 1280 on 1920 the factor is 1.5
to match 960 on 1920 the factor is 2.0

I know it sounds crazy, but i think we have here a wired precision bug in the scalefactor calculation... if you multiply 540 * 1.999999999 you get 1079(int)/1079.999999946(float) pixel, instead of precisely 1080. From int perspective there is the exact 1 pixel we miss.

That sounds like a good lead. Does that sound possible Sotaro? I wonder if it's inside WR / layout / media if that is the case, will need some investigation to confirm if that is happening and where.

Flags: needinfo?(sotaro.ikeda.g)

How did you set the fullscreen? Do you use PIP window and then make if fullscreen or dou you fullscreen it directly from Firefox?
Can you try to reproduce on any YT video? (Not netflix, I don't have it). You you see that if you play any clip from disk?
Thanks.

Flags: needinfo?(support)

I tested 960x540 directly and I can't reproduce it (PIP or non-PIP mode).

non-pip mode, directly inside ff.

Netflix uses "two masks" .. you choose your movie and than it it jumps to another page where it plays the video.
If FF is already in Fullscreen, the main window selecting the movie has no issues with that missing pixel line,
in play mode, it has no issues with 1280x720, but
in play mode with 960x540 it has an issue.

I my experience with 40 years of coding, i believe, it's a calculation result problem inside the javascript of netflix i.e. not using the correct rounding function to get rid of the float result and get absolut integer pixels.

The main question for ff devs here is:

Why does it result in a transparent line?

If ff is running fullscreen on 1920x1080, any media playback element should be inside a black rectangle of 1920x1080, resulting in black pixels where the media object isn't covering the pane/frame/whatever-you-call-it.

So, where does this transparency come from?

I do not have the js media api at hand to check if it's possible to call it with float variables for x & y , which would be surprising as there are no halve pixels on a real world display.

If x & y are integers, there will be structure to init the media playback and that will have a different resolution than the function call from js will provide ( 1920x1079 ) which will lead to a misaligned pixelbuffer as a result.

Regarding your experiment with directly open a video file with 960x540 that can't be compared here, as different functions are involved i.e. no javascript is needed to play a video if ff opens it as a file. I think js plays a major role here.

If i knew more about the media api i could debug the js code to a point where we get useful informations.

Flags: needinfo?(support)
Assignee: ahale → nobody
No longer blocks: gfx-triage

Reducing severity to S3 since this doesn't match the definition of "Major functionality/product severely impaired or a high impact issue and a satisfactory workaround does not exist".

Severity: S2 → S3

In this image the "ALPHA"ED Line is in mid screen. (Different bg image than on the other examples).

The question is still, why is that one line transparent and not black like the rest?

@Martin: YT is a very bad testsuite, as you never know which kind of scaling had to be done.

And of course, this could also be a bug in Netflixes JS code , but I'm pretty sure that the transparent line isn't on purpose ;)

i informed Netflix about this bug..

You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: