gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] [bug #27981] fscommand:quit ineffective if in first frame


From: Nutchanon Wetchasit
Subject: [Gnash-commit] [bug #27981] fscommand:quit ineffective if in first frame
Date: Fri, 15 Jan 2016 09:48:52 +0000
User-agent: Mozilla/5.0 (X11; Linux i686; rv:25.5) Gecko/20150606 Firefox/31.9 PaleMoon/25.5.0

Follow-up Comment #7, bug #27981 (project gnash):

Regarding window-related assertion warnings, I have tested around and found
that they were caused by two
<http://git.savannah.gnu.org/cgit/gnash.git/tree/gui/gtk/gtk.cpp?id=e8b111c3ca89eb23624d5c994fc4dff9b787d161#n913>
part
<http://git.savannah.gnu.org/cgit/gnash.git/tree/gui/gtk/gtk.cpp?id=e8b111c3ca89eb23624d5c994fc4dff9b787d161#n870>
of screen refreshing code
<http://git.savannah.gnu.org/cgit/gnash.git/tree/gui/gui.cpp?id=e8b111c3ca89eb23624d5c994fc4dff9b787d161#n689>
which took place
after frame's initial ActionScript interpretation
<http://git.savannah.gnu.org/cgit/gnash.git/tree/gui/gui.cpp?id=e8b111c3ca89eb23624d5c994fc4dff9b787d161#n942>
in frame-advancing
<http://git.savannah.gnu.org/cgit/gnash.git/tree/gui/gui.cpp?id=e8b111c3ca89eb23624d5c994fc4dff9b787d161#n934>.

Warnings appeared as screen refreshing code is run without knowing that
the window was already destroyed by `GtkGui::quitUI()`
<http://git.savannah.gnu.org/cgit/gnash.git/tree/gui/gtk/gtk.cpp?id=e8b111c3ca89eb23624d5c994fc4dff9b787d161#n592>.

For the reason that `secondframeexit.swf` produced no assertion warnings even
`GtkGui::quitUI()` ran before window refreshing, is that there was no
graphics
change between first and second frame, thus refreshing was skipped
<http://git.savannah.gnu.org/cgit/gnash.git/tree/gui/gui.cpp?id=e8b111c3ca89eb23624d5c994fc4dff9b787d161#n768>.

I have created a variant of `secondframeexit.swf` which has graphics drawn
on second frame. When run with Gnash, you'd see that the window assertion
warnings are now appeared:

`gnash -vv secondframeexit-repaint.swf`:

83 DEBUG: gnash::GtkAggGlue::GtkAggGlue() enter
83 DEBUG: gnash::GtkAggGlue::GtkAggGlue() returning
83 DEBUG: virtual bool gnash::GtkAggGlue::init(int, char***) enter
83 DEBUG: virtual bool gnash::GtkAggGlue::init(int, char***) returning
107 DEBUG: gnash_canvas_size_allocate 257 1
107 DEBUG: virtual void gnash::GtkAggGlue::prepDrawingArea(GtkWidget*) enter
107 DEBUG: virtual void gnash::GtkAggGlue::prepDrawingArea(GtkWidget*)
returning
107 DEBUG: virtual gnash::Renderer* gnash::GtkAggGlue::createRenderHandler()
enter
108 DEBUG: Framebuffer pixel format is BGRA32 (little-endian host)
108 DEBUG: virtual gnash::Renderer* gnash::GtkAggGlue::createRenderHandler()
returning
108 DEBUG: virtual void gnash::GtkAggGlue::setRenderHandlerSize(int, int)
enter
108 DEBUG: virtual void gnash::GtkAggGlue::setRenderHandlerSize(int, int)
returning
109 DEBUG: /home/window/Desktop/secondframeexit-repaint/ appended to local
sandboxes
109 DEBUG:
/home/window/Desktop/secondframeexit-repaint/secondframeexit-repaint.swf
appended to local sandboxes
109 SECURITY: Checking security of URL
'file:///home/window/Desktop/secondframeexit-repaint/secondframeexit-repaint.swf'
109 SECURITY: Load of file
/home/window/Desktop/secondframeexit-repaint/secondframeexit-repaint.swf
granted (under local sandbox /home/window/Desktop/secondframeexit-repaint/)
109 DEBUG: Movie
file:///home/window/Desktop/secondframeexit-repaint/secondframeexit-repaint.swf
(SWF7) added to library
135 SECURITY: Extensions disabled
136 DEBUG: Advance interval timer set to 10 ms (~ 100 FPS)
136 DEBUG: Loading native class MovieClip
136 TRACE: This is first frame.
136 DEBUG: void gnash::Gui::resize_view(int, int) enter
136 DEBUG: void gnash::Gui::resize_view(int, int) returning
143 DEBUG: gnash_canvas_size_allocate 320 240
143 DEBUG: virtual void gnash::GtkAggGlue::setRenderHandlerSize(int, int)
enter
159 DEBUG: virtual void gnash::GtkAggGlue::setRenderHandlerSize(int, int)
returning
159 DEBUG: virtual void gnash::GtkAggGlue::setRenderHandlerSize(int, int)
enter
159 DEBUG: virtual void gnash::GtkAggGlue::setRenderHandlerSize(int, int)
returning
159 DEBUG: void gnash::Gui::resize_view(int, int) enter
161 DEBUG: void gnash::Gui::resize_view(int, int) returning
222 TRACE: This is second frame start.
223 TRACE: This is second frame end.

(gtk-gnash:10008): Gdk-CRITICAL **: gdk_window_invalidate_rect_full: assertion
`GDK_IS_WINDOW (window)' failed

(gtk-gnash:10008): Gdk-CRITICAL **: IA__gdk_window_process_updates: assertion
`GDK_IS_WINDOW (window)' failed
225 DEBUG: Main loop ended, cleaning up
225 DEBUG: ~Player - _movieDef refcount: 2 (1 will be dropped now)
225 DEBUG: ~Gui - _movieDef refcount: 1


Test files and source code are attached as `secondframeexit-repaint.zip`.

Gnash: 0.8.11dev (git e8b111c 13-Jan-2016)
System: Debian GNU/Linux 7.0 Wheezy i386

Note: `secondframeexit-repaint.swf` is hand-crafted using SWFML Simple,
as SWFTools's SWFC did not recognize the built-in `getURL()` function,
and Gnash did not recognize "fscommand:" scheme in `MovieClip.getURL()`.


(file #36046)
    _______________________________________________________

Additional Item Attachment:

File name: secondframeexit-repaint.zip    Size:4 KB


    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?27981>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]