freshplayerplugin icon indicating copy to clipboard operation
freshplayerplugin copied to clipboard

Freshplayer fails to show any graphics in Firefox 42 on Linux after resize

Open AstralStorm opened this issue 10 years ago • 14 comments

It seems that Freshplayer fails to properly embed its video in latest Firefox versions on Linux, which now use GTK 3.

Here's the log:

[fresh] [warning] ppb_var_var_to_utf8, 'var' is not a string, (0)
(firefox:29864): Gdk-CRITICAL **: gdk_window_get_user_data: assertion 'GDK_IS_WINDOW (window)' failed
(firefox:29864): Gtk-CRITICAL **: gtk_container_add: assertion 'GTK_IS_CONTAINER (container)' failed
(firefox:29864): Gtk-CRITICAL **: gtk_widget_realize: assertion 'widget->priv->anchored || GTK_IS_INVISIBLE (widget)' failed
(firefox:29864): Gtk-CRITICAL **: gtk_socket_get_id: assertion '_gtk_widget_get_anchored (GTK_WIDGET (socket))' failed

AstralStorm avatar Oct 24 '15 02:10 AstralStorm

latest Firefox versions on Linux

What version do you use? Where did you get it from?

As far as I know, Firefox supports both GTK+2 and GTK+3. It's selected during compilation which version will you get. Also there are a lot of other configuration options, they can have effect too.

i-rinat avatar Oct 24 '15 15:10 i-rinat

Firefox 42 beta 8, but this happened on slightly older versions. Gentoo build, as I've mentioned, GTK 3 is enabled.

AstralStorm avatar Oct 24 '15 17:10 AstralStorm

There should be something more. I've just tried to compile GTK+ 3 versions of 41.0.2 and 42.0b8, and they both work fine with all types of flash wmode (transparent, window, direct) on my machine.

Perhaps that XEmbed tension have something with particular version of GTK+ 3? Does it happen on every Flash movie?

By the way, have adding enable_xembed = 0 to ~/.config/freshwrapper.conf any effect?

i-rinat avatar Oct 24 '15 22:10 i-rinat

Settings don't matter. I found that it's switching to theather mode that causes the graphics to disappear... related to resizing.

I've verified the issue, it also happens in GTK2 mode.

Potential culprit that appears after resize: (firefox:31978): Gtk-WARNING **: GtkContainerClass::add not implemented for `GtkSocket'

More version data: gtk+2: 2.24.28-r1 gtk+3: 3.16.7

AstralStorm avatar Oct 25 '15 11:10 AstralStorm

Settings don't matter.

Which is weird, since without enabled XEmbed in a plugin, browser shouldn't bother with creating GtkSocket at all.

theather mode

What is theater mode?

disappear

Are there any messages containing "caught Xlib error" if you launch browser from terminal emulator?

(firefox:31978): Gtk-WARNING **: GtkContainerClass::add not implemented for `GtkSocket'

Searching the web gives some reports with similar errors:

  • http://forum.peppermintos.com/index.php?topic=2284.0
  • http://askubuntu.com/questions/661368/cannot-watch-hulu-on-firefox-after-fresh-install-on-14-04

which however, have no signs of freshwrapper used. Could you check whenever Flash 11.2 works fine?

i-rinat avatar Oct 25 '15 22:10 i-rinat

No Xlib errors I can see. Flash also has Z-order trouble - after a resize it blinks instead. I bet on a Firefox bug.

AstralStorm avatar Oct 26 '15 06:10 AstralStorm

Had you any chance to check whenever Flash 11.2 works?

i-rinat avatar Nov 01 '15 21:11 i-rinat

Yes, it also has problems - in there, it looks like Z fighting. Chromium and Firefox 41 do not have any problems - I think this has to be forwarded to Mozilla Bugzilla instead.

AstralStorm avatar Nov 02 '15 08:11 AstralStorm

Then it's unlikely I can do anything about it in freshplayerplugin.

i-rinat avatar Nov 02 '15 14:11 i-rinat

Flash also has Z-order trouble - after a resize it blinks instead. I bet on a Firefox bug.

Here is excerpt from Firefox source code:

  // The GtkSocket has a visible window, but the plugin's XEmbed plug will
  // cover this window.  Normally GtkSockets let the X server paint their
  // background and this would happen immediately (before the plug is
  // created).  Setting the background to None prevents the server from
  // painting this window, avoiding flicker.
  // TODO GTK3
#if (MOZ_WIDGET_GTK == 2)
  gdk_window_set_back_pixmap(gtk_widget_get_window(mSocketWidget), nullptr, FALSE);
#endif

Flickering mitigation is not implemented for GTK+ 3 version yet.

i-rinat avatar Nov 02 '15 16:11 i-rinat

I'm not sure whether it's firefox or not. In any case I had the same issue (audio yes, video only blackbox) and managed to get it to work by disabling the enable_3d flag. I'm using Firefox 42, using OpenSUSE leap, using freshplayerplugin from packman repo. I had it working previously under OpenSUSE 13.1 with same firefox version, but obviously different syslibraries such as those for my intel graphics and different builds for firefox and freshplayer.

Best wishes, Mischa

msalle avatar Nov 18 '15 15:11 msalle

@msalle, the bug looks like https://github.com/i-rinat/freshplayerplugin/issues/275#issuecomment-146226474

As far as I can tell, OpenSuSE leap 42 uses Mesa 11.0.2, exact version that had such issue. But since then, I changed configuration a bit, and now version with GLES2 emulator is built by default. It shouldn't be affected.

Which version of freshplayerplugin do you use? Have you tried version from master branch?

i-rinat avatar Nov 18 '15 20:11 i-rinat

Ah, thanks for pointing me to that link! Indeed, opensuse leap uses Mesa 11.0.2. I'm using plugin 0.3.3 (packman repo build). I will try out the master/trunk version or try to get an updated mesa library, to see which solves it. I'll let you know what comes out of that...

msalle avatar Nov 19 '15 18:11 msalle

I can confirm Mesa update (to e.g. 11.0.6) or master version fixes the black box. I now only have an issue with my microphone, playing audio is fine, but capture is extremely slow and broken up, also in master version. I'll open a separate issue for that.

msalle avatar Nov 24 '15 15:11 msalle