Closed Bug 1281435 Opened 8 years ago Closed 6 years ago

Keep up with GdkDrawingContext/Gtk 3.20

Categories

(Core :: Widget: Gtk, defect)

x86
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED
Tracking Status
firefox50 --- affected

People

(Reporter: stransky, Unassigned)

References

(Blocks 1 open bug)

Details

I agree that Gecko should not disable double buffering on the toplevel if it is not drawing to the toplevel.  With CSD GTK will be drawing to that window and Gecko should not change things.

But Gecko disables double buffering on the toplevel only when !shellHasCSD
http://searchfox.org/mozilla-central/rev/970569ad57ac4436ff31aa2ac63f38ed3ee2932d/widget/gtk/nsWindow.cpp#3920

So I don't understand the issue.
I pinged Red Hat gtk folks about it.
The commit message in question should give a bit of a background, but I guess the tl;dr is: we'd like GTK to keep double buffering top level windows, mostly because that's the only consistent behaviour we can adopt across all backends — especially on Wayland, where everything is by definition double buffered.

Ideally, the shell GtkWindow should stay double buffered, while MozContainer could use the existing code path to create a child GdkWindow, and disable double buffering only on the container, for both the shellHasCSD and !shellHasCSD cases.
> Ideally, the shell GtkWindow should stay double buffered, while MozContainer
> could use the existing code path to create a child GdkWindow, and disable
> double buffering only on the container, for both the shellHasCSD and
> !shellHasCSD cases.

So you're talking about a situation when csd is disabled, right? Because Firefox doesn't disable double buffering on toplevel (mShell) when csd is enabled.
Flags: needinfo?(ebassi)
After some debugging it looks like Firefox does not get csd state reliably. For instance on Gnome-shell Wayland session when I run Firefox on Wayland display the csd is detected but when run on X display the csd state is false although it may be actually used.
¡Hola Martin!

I happen to run Nightly from a terminal in Debian sid and got the lines below today.

Shall I file a separate bug about them or are these part of https://bugzilla.mozilla.org/show_bug.cgi?id=1281435 ?

¡Gracias!
Alex


Gtk-Message: Failed to load module "canberra-gtk-module"

(firefox:2213): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to underallocate MozContainer's child GtkSocket 0x7fc9ea1eb950. Allocation is 0x0, but minimum required size is 1x1.

(firefox:2213): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to underallocate MozContainer's child GtkSocket 0x7fc9ea1eb950. Allocation is 0x0, but minimum required size is 1x1.

(firefox:2213): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to underallocate MozContainer's child GtkSocket 0x7fc9ea1eb950. Allocation is 0x0, but minimum required size is 1x1.
Gtk-Message: Failed to load module "canberra-gtk-module"

(firefox:2213): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to underallocate MozContainer's child GtkSocket 0x7fc9ea1eb950. Allocation is 0x0, but minimum required size is 1x1.

(firefox:2213): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to underallocate MozContainer's child GtkSocket 0x7fc9ea1eb950. Allocation is 0x0, but minimum required size is 1x1.

(firefox:2213): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to underallocate MozContainer's child GtkSocket 0x7fc9ea1eb950. Allocation is 0x0, but minimum required size is 1x1.

(firefox:2213): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to underallocate MozContainer's child GtkSocket 0x7fc9ea1eb950. Allocation is 0x0, but minimum required size is 1x1.

(firefox:2213): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to underallocate MozContainer's child GtkSocket 0x7fc9e9fec350. Allocation is 0x0, but minimum required size is 1x1.

(firefox:2213): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to underallocate MozContainer's child GtkSocket 0x7fc9e9fec350. Allocation is 0x0, but minimum required size is 1x1.

(firefox:2213): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to underallocate MozContainer's child GtkSocket 0x7fc9e9fec350. Allocation is 0x0, but minimum required size is 1x1.

(firefox:2213): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to underallocate MozContainer's child GtkSocket 0x7fc9ea1eb950. Allocation is 0x0, but minimum required size is 1x1.
Gtk-Message: Failed to load module "canberra-gtk-module"

(firefox:2213): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to underallocate MozContainer's child GtkSocket 0x7fc9e9fec350. Allocation is 0x0, but minimum required size is 1x1.

(firefox:2213): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to underallocate MozContainer's child GtkSocket 0x7fc9ea1eb950. Allocation is 0x0, but minimum required size is 1x1.

(firefox:2213): Gtk-WARNING **: GtkSocket 0x7fc9ea1eb950 is mapped but visible=1 child_visible=1 parent MozContainer 0x7fc9d2226350 mapped=0

(firefox:2213): Gtk-WARNING **: GtkSocket 0x7fc9e9fec350 is mapped but visible=1 child_visible=1 parent MozContainer 0x7fc9d2226350 mapped=0
Flags: needinfo?(stransky)
(In reply to alex_mayorga from comment #6)

> I happen to run Nightly from a terminal in Debian sid and got the lines
> below today.
> 
> Shall I file a separate bug about them or are these part of
> https://bugzilla.mozilla.org/show_bug.cgi?id=1281435 ?

No, these warnings are likely caused by something else in the MozContainer widget implementation.
 
> (firefox:2213): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to
> underallocate MozContainer's child GtkSocket 0x7fc9ea1eb950. Allocation is
> 0x0, but minimum required size is 1x1.

Widgets must have a minimum allocation of 1x1 for historical reasons (back when they were backed by a native windowing system surface the minimum size for them was at least 1 pixel width and height).
GtkSocket? Looks related to some plugin you run. Can you try in safe mode? (firefox -safe-mode) and disable plugins? If that's caused by some plugin please file a new bug for it.
Flags: needinfo?(stransky) → needinfo?(alex_mayorga)
¡Hola Martin!

I no longer see the Gtk-WARNING.

Now I wonder if the dconf-CRITICAL is bug worthy or a missconfiguration of my copy of Debian.

¡Gracias!
Alex

1482886890027	addons.xpi	WARN	Exception running bootstrap method install on shield-recipe-client@mozilla.org: [Exception... "Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPrefBranch.getBoolPref]"  nsresult: "0x8000ffff (NS_ERROR_UNEXPECTED)"  location: "JS frame :: resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///home/alex/Escritorio/firefox-mx/browser/features/shield-recipe-client@mozilla.org.xpi!/bootstrap.js :: this.install :: line 38"  data: no] Stack trace: this.install()@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///home/alex/Escritorio/firefox-mx/browser/features/shield-recipe-client@mozilla.org.xpi!/bootstrap.js:38 < callBootstrapMethod()@resource://gre/modules/addons/XPIProvider.jsm:4979 < processFileChanges()@resource://gre/modules/addons/XPIProvider.jsm -> resource://gre/modules/addons/XPIProviderUtils.js:2097 < checkForChanges()@resource://gre/modules/addons/XPIProvider.jsm:3825 < startup()@resource://gre/modules/addons/XPIProvider.jsm:2829 < callProvider()@resource://gre/modules/AddonManager.jsm:264 < _startProvider()@resource://gre/modules/AddonManager.jsm:771 < startup()@resource://gre/modules/AddonManager.jsm:957 < startup()@resource://gre/modules/AddonManager.jsm:2923 < observe()@resource://gre/components/addonManager.js:65
console.log:  *** aboutsync:  starting up
data.id=b2g-installer@mozilla.org
data.version=0.9.10
data.installPath=[xpconnect wrapped nsIFile]
data.resourceURI=[xpconnect wrapped nsIURI]
data.instanceID=Symbol(b2g-installer@mozilla.org)
IN registerAddonResourceHandler WITH file=/home/alex/.mozilla/firefox/neieo8wu.default/extensions/b2g-installer@mozilla.org1482886890219	addons.xpi	WARN	Error loading bootstrap.js for {c37bac34-849a-4d28-be41-549b2c76c64e}: SyntaxError: non-generator method definitions may not contain yield (resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///home/alex/.mozilla/firefox/neieo8wu.default/extensions/%7Bc37bac34-849a-4d28-be41-549b2c76c64e%7D.xpi!/bootstrap.js:582:28) JS Stack trace: @XPIProvider.jsm:4831:1 < loadBootstrapScope@XPIProvider.jsm:4831:7 < callBootstrapMethod@XPIProvider.jsm:4910:9 < startup@XPIProvider.jsm:2884:13 < callProvider@AddonManager.jsm:264:12 < _startProvider@AddonManager.jsm:771:5 < startup@AddonManager.jsm:957:9 < startup@AddonManager.jsm:2923:5 < observe@addonManager.js:65:9
1482886890220	addons.xpi	WARN	Add-on {c37bac34-849a-4d28-be41-549b2c76c64e} is missing bootstrap method startup
1482886890655	addons.webextension.jid1-mjpB54bRzP9Zxw@jetpack	WARN	Please specify whether you want browser_style or not in your browser_action options.

(/home/alex/Escritorio/firefox-mx/firefox:20415): dconf-CRITICAL **: unable to create file '/run/user/1000/dconf/user': Permiso denegado.  dconf will not work properly.

(/home/alex/Escritorio/firefox-mx/firefox:20415): dconf-CRITICAL **: unable to create file '/run/user/1000/dconf/user': Permiso denegado.  dconf will not work properly.

(/home/alex/Escritorio/firefox-mx/firefox:20415): dconf-CRITICAL **: unable to create file '/run/user/1000/dconf/user': Permiso denegado.  dconf will not work properly.
Flags: needinfo?(alex_mayorga)
Flags: needinfo?(ebassi)
We already do what's requested at (In reply to Karl Tomlinson (:karlt) from comment #1)
> I agree that Gecko should not disable double buffering on the toplevel if it
> is not drawing to the toplevel.  With CSD GTK will be drawing to that window
> and Gecko should not change things.
> 
> But Gecko disables double buffering on the toplevel only when !shellHasCSD
> http://searchfox.org/mozilla-central/rev/
> 970569ad57ac4436ff31aa2ac63f38ed3ee2932d/widget/gtk/nsWindow.cpp#3920
> 
> So I don't understand the issue.

You're right, let's close it.
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.