[Swfdec-commits] 6 commits - gtk-doc.make player/swfplay.c swfdec/swfdec_font.c swfdec/swfdec_movie.c swfdec/swfdec_movie.h swfdec/swfdec_player.c swfdec/swfdec_player_internal.h test/trace vivified/code

Benjamin Otte company at kemper.freedesktop.org
Mon Mar 31 04:53:37 PDT 2008


 gtk-doc.make                                  |   28 ++++++++++-------
 player/swfplay.c                              |    9 ++++-
 swfdec/swfdec_font.c                          |    2 -
 swfdec/swfdec_movie.c                         |   14 ++++++++
 swfdec/swfdec_movie.h                         |    4 +-
 swfdec/swfdec_player.c                        |   32 +++++++++++++++++++
 swfdec/swfdec_player_internal.h               |    1 
 test/trace/Makefile.am                        |    9 +++++
 test/trace/selection-focus-events-5.swf       |binary
 test/trace/selection-focus-events-6.swf       |binary
 test/trace/selection-focus-events-6.swf.trace |   10 ++++++
 test/trace/selection-focus-events-7.swf       |binary
 test/trace/selection-focus-events-7.swf.trace |   10 ++++++
 test/trace/selection-focus-events-8.swf       |binary
 test/trace/selection-focus-events-8.swf.trace |   10 ++++++
 test/trace/selection-focus-events.as          |   42 ++++++++++++++++++++++++++
 vivified/code/Makefile.am                     |   12 -------
 17 files changed, 154 insertions(+), 29 deletions(-)

New commits:
commit 6cea86f5ee6f93dfaf0679cce6144876d2df24b4
Author: Pavel Roskin <proski at gnu.org>
Date:   Mon Mar 31 13:52:51 2008 +0200

    Update gtk-doc.make from gtk-doc SVN repository
    
    This fixes incorrect --destdir switch.

diff --git a/gtk-doc.make b/gtk-doc.make
index ef350de..354ffb7 100644
--- a/gtk-doc.make
+++ b/gtk-doc.make
@@ -5,11 +5,11 @@
 ####################################
 
 if GTK_DOC_USE_LIBTOOL
-GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(AM_CFLAGS) $(CFLAGS)
-GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS)
+GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
 else
-GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CFLAGS) $(CFLAGS)
-GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS)
+GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
 endif
 
 # We set GPATH here; this gives us semantics for GNU make
@@ -119,12 +119,16 @@ clean-local:
 	rm -f *~ *.bak
 	rm -rf .libs
 
+distclean-local:
+	cd $(srcdir) && \
+	  rm -rf xml $(REPORT_FILES) \
+	         $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+
 maintainer-clean-local: clean
-	cd $(srcdir) && rm -rf xml html \
-	$(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt $(REPORT_FILES)
+	cd $(srcdir) && rm -rf xml html
 
 install-data-local:
-	installfiles=`echo $(srcdir)/html/*`; \
+	-installfiles=`echo $(srcdir)/html/*`; \
 	if test "$$installfiles" = '$(srcdir)/html/*'; \
 	then echo '-- Nothing to install' ; \
 	else \
@@ -135,8 +139,10 @@ install-data-local:
 	  done; \
 	  echo '-- Installing $(srcdir)/html/index.sgml' ; \
 	  $(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR) || :; \
+	  which gtkdoc-rebase >/dev/null && \
+	    gtkdoc-rebase --relative --dest-dir=$(DESTDIR) --html-dir=$(DESTDIR)$(TARGET_DIR) ; \
 	fi
-	-gtkdoc-rebase --relative --destdir=$(DESTDIR) --html-dir=$(DESTDIR)$(TARGET_DIR)
+	
 
 uninstall-local:
 	rm -f $(DESTDIR)$(TARGET_DIR)/*
@@ -159,9 +165,9 @@ dist-hook: dist-check-gtkdoc dist-hook-local
 	-cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
 	-cp $(srcdir)/xml/*.xml $(distdir)/xml
 	cp $(srcdir)/html/* $(distdir)/html
-	if test -f $(srcdir)/$(DOC_MODULE).types; then \
-	  cp $(srcdir)/$(DOC_MODULE).types $(distdir)/$(DOC_MODULE).types; \
-	fi
+	-cp $(srcdir)/$(DOC_MODULE).types $(distdir)/
+	-cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/
+	cd $(distdir) && rm -f $(DISTCLEANFILES)
 	-gtkdoc-rebase --online --relative --html-dir=$(distdir)/html
 
 .PHONY : dist-hook-local docs
commit 2f69335d39e29262f8e5dc29cd1100e704475d19
Author: Benjamin Otte <otte at gnome.org>
Date:   Mon Mar 31 13:44:48 2008 +0200

    fix there being one 20 too much in the font scale factor (fixes #15262)
    
    Can't add a test unfortunately as that would require user fonts working...

diff --git a/swfdec/swfdec_font.c b/swfdec/swfdec_font.c
index 42a40c0..a1dc936 100644
--- a/swfdec/swfdec_font.c
+++ b/swfdec/swfdec_font.c
@@ -276,7 +276,7 @@ tag_func_define_font_2 (SwfdecSwfDecoder * s, guint tag)
   if (!font)
     return SWFDEC_STATUS_OK;
   SWFDEC_LOG ("  id = %u", id);
-  font->scale_factor = 20 * SWFDEC_TEXT_SCALE_FACTOR * (tag == SWFDEC_TAG_DEFINEFONT3 ? 20 : 1);
+  font->scale_factor = SWFDEC_TEXT_SCALE_FACTOR * (tag == SWFDEC_TAG_DEFINEFONT3 ? 20 : 1);
 
   layout = swfdec_bits_getbit (bits);
   SWFDEC_LOG (" layout = %d", layout);
commit df46846f600192a9f17bcabbb95e072adfe3d285
Author: Benjamin Otte <otte at gnome.org>
Date:   Mon Mar 31 13:40:39 2008 +0200

    add some infrastructure for handling tab presses

diff --git a/swfdec/swfdec_player.c b/swfdec/swfdec_player.c
index 98c3583..cbddd01 100644
--- a/swfdec/swfdec_player.c
+++ b/swfdec/swfdec_player.c
@@ -1374,8 +1374,18 @@ swfdec_player_emit_signals (SwfdecPlayer *player)
 }
 
 static void
+swfdec_player_handle_tab (SwfdecPlayer *player, gboolean forward)
+{
+  SWFDEC_FIXME ("handle tab properly");
+}
+
+static void
 swfdec_player_handle_special_keys (SwfdecPlayer *player, guint key)
 {
+  if (key == SWFDEC_KEY_TAB) {
+    gboolean forward = swfdec_player_is_key_pressed (player, SWFDEC_KEY_SHIFT);
+    swfdec_player_handle_tab (player, forward);
+  }
 }
 
 static gboolean
diff --git a/swfdec/swfdec_player_internal.h b/swfdec/swfdec_player_internal.h
index fca27d8..9987708 100644
--- a/swfdec/swfdec_player_internal.h
+++ b/swfdec/swfdec_player_internal.h
@@ -187,6 +187,7 @@ SwfdecSocket *	swfdec_player_create_socket	(SwfdecPlayer *		player,
 
 void		swfdec_player_grab_focus	(SwfdecPlayer *		player,
 						 SwfdecMovie *		movie);
+#define swfdec_player_is_key_pressed(player,key) ((player)->priv->key_pressed[(key) / 8] & (1 << ((key) % 8)))
 #define swfdec_player_is_mouse_pressed(player) ((player)->priv->mouse_button & 1)
 void		swfdec_player_invalidate	(SwfdecPlayer *		player,
 						 const SwfdecRect *	rect);
commit b42ab3e2a1e1c58914ab0e07dba1ee1c4ec98400
Author: Benjamin Otte <otte at gnome.org>
Date:   Sat Mar 29 22:30:42 2008 +0100

    various focus changes
    
    - emit onKeyPress and onKeyRelease events
    - swfdec_player_set_focus (TRUE) only sets a focus when no movie has focus

diff --git a/player/swfplay.c b/player/swfplay.c
index c0288a1..63c4731 100644
--- a/player/swfplay.c
+++ b/player/swfplay.c
@@ -37,6 +37,12 @@ set_title (GtkWindow *window, const SwfdecURL *url)
   g_free (title);
 }
 
+static void
+set_playing (SwfdecGtkWidget *widget, GParamSpec *pspec, gpointer player)
+{
+  swfdec_gtk_player_set_playing (player, TRUE);
+}
+
 static GtkWidget *
 view_swf (SwfdecPlayer *player, gboolean use_image)
 {
@@ -50,6 +56,7 @@ view_swf (SwfdecPlayer *player, gboolean use_image)
   gtk_container_add (GTK_CONTAINER (window), widget);
   g_signal_connect_swapped (window, "destroy", G_CALLBACK (g_main_loop_quit), loop);
   gtk_widget_show_all (window);
+  g_signal_connect (widget, "notify::has-focus", G_CALLBACK (set_playing), player);
 
   return window;
 }
@@ -150,8 +157,6 @@ main (int argc, char *argv[])
       window->window);
   swfdec_url_free (url);
 
-  swfdec_gtk_player_set_playing (SWFDEC_GTK_PLAYER (player), TRUE);
-
   if (g_main_loop_is_running (loop))
     g_main_loop_run (loop);
 
diff --git a/swfdec/swfdec_movie.c b/swfdec/swfdec_movie.c
index 01c02cf..16f90a2 100644
--- a/swfdec/swfdec_movie.c
+++ b/swfdec/swfdec_movie.c
@@ -1455,6 +1455,18 @@ swfdec_movie_mouse_move (SwfdecMovie *movie, double x, double y)
 }
 
 static void
+swfdec_movie_key_press (SwfdecMovie *movie, guint keycode, guint character)
+{
+  swfdec_movie_queue_script (movie, SWFDEC_EVENT_KEY_DOWN);
+}
+
+static void
+swfdec_movie_key_release (SwfdecMovie *movie, guint keycode, guint character)
+{
+  swfdec_movie_queue_script (movie, SWFDEC_EVENT_KEY_UP);
+}
+
+static void
 swfdec_movie_do_invalidate (SwfdecMovie *movie, const cairo_matrix_t *matrix, gboolean last)
 {
   GList *walk;
@@ -1506,6 +1518,8 @@ swfdec_movie_class_init (SwfdecMovieClass * movie_class)
   movie_class->mouse_press = swfdec_movie_mouse_press;
   movie_class->mouse_release = swfdec_movie_mouse_release;
   movie_class->mouse_move = swfdec_movie_mouse_move;
+  movie_class->key_press = swfdec_movie_key_press;
+  movie_class->key_release = swfdec_movie_key_release;
 }
 
 void
diff --git a/swfdec/swfdec_movie.h b/swfdec/swfdec_movie.h
index f7da3f7..125f4be 100644
--- a/swfdec/swfdec_movie.h
+++ b/swfdec/swfdec_movie.h
@@ -184,10 +184,10 @@ struct _SwfdecMovieClass {
   /* keyboard handling */
   void			(* focus_in)		(SwfdecMovie *		movie);
   void			(* focus_out)		(SwfdecMovie *		movie);
-  void			(* key_pressed)		(SwfdecMovie *		movie,
+  void			(* key_press)		(SwfdecMovie *		movie,
 						 guint			keycode,
 						 guint			character);
-  void			(* key_released)      	(SwfdecMovie *		movie,
+  void			(* key_release)      	(SwfdecMovie *		movie,
 						 guint			keycode,
 						 guint			character);
 
diff --git a/swfdec/swfdec_player.c b/swfdec/swfdec_player.c
index e7d7f36..98c3583 100644
--- a/swfdec/swfdec_player.c
+++ b/swfdec/swfdec_player.c
@@ -1082,6 +1082,7 @@ swfdec_player_grab_focus (SwfdecPlayer *player, SwfdecMovie *movie)
   g_return_if_fail (SWFDEC_IS_PLAYER (player));
   g_return_if_fail (movie == NULL || SWFDEC_IS_MOVIE (movie));
 
+  g_print ("movie %s grabs focus (%d)\n", movie ? movie->name : "---", player->priv->has_focus);
   /* set variables */
   priv = player->priv;
   if (movie == priv->focus) {
@@ -1372,6 +1373,11 @@ swfdec_player_emit_signals (SwfdecPlayer *player)
   }
 }
 
+static void
+swfdec_player_handle_special_keys (SwfdecPlayer *player, guint key)
+{
+}
+
 static gboolean
 swfdec_player_do_handle_key (SwfdecPlayer *player, guint keycode, guint character, gboolean down)
 {
@@ -1390,6 +1396,19 @@ swfdec_player_do_handle_key (SwfdecPlayer *player, guint keycode, guint characte
   }
   swfdec_player_broadcast (player, SWFDEC_AS_STR_Key, 
       down ? SWFDEC_AS_STR_onKeyDown : SWFDEC_AS_STR_onKeyUp, 0, NULL);
+  if (priv->focus) {
+    SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (priv->focus);
+    g_print ("got a focus movie!\n");
+    if (down) {
+      if (klass->key_press)
+	klass->key_press (priv->focus, keycode, character);
+    } else {
+      if (klass->key_release)
+	klass->key_release (priv->focus, keycode, character);
+    }
+  }
+  if (down)
+    swfdec_player_handle_special_keys (player, keycode);
   swfdec_player_perform_actions (player);
   swfdec_player_unlock (player);
 
@@ -3112,7 +3131,8 @@ swfdec_player_update_focus (gpointer playerp, gpointer unused)
   SwfdecPlayerPrivate *priv = player->priv;
 
   if (priv->has_focus) {
-    swfdec_player_grab_focus (player, priv->focus_previous);
+    if (priv->focus == NULL)
+      swfdec_player_grab_focus (player, priv->focus_previous);
   } else {
     swfdec_player_grab_focus (player, NULL);
   }
commit caaafcd0d9a7215ae5af572dbefc01c7766bb7ae
Author: Benjamin Otte <otte at gnome.org>
Date:   Sat Mar 29 17:34:25 2008 +0100

    add test about focus event handling

diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 68a91a7..7e44ea6 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -2616,6 +2616,15 @@ EXTRA_DIST = \
 	selection-focus-8.swf \
 	selection-focus-8.swf.trace \
 	selection-focus.as \
+	selection-focus-events-5.swf \
+	selection-focus-events-5.swf.trace \
+	selection-focus-events-6.swf \
+	selection-focus-events-6.swf.trace \
+	selection-focus-events-7.swf \
+	selection-focus-events-7.swf.trace \
+	selection-focus-events-8.swf \
+	selection-focus-events-8.swf.trace \
+	selection-focus-events.as \
 	selection-properties.as \
 	selection-properties-5.swf \
 	selection-properties-5.swf.trace \
diff --git a/test/trace/selection-focus-events-5.swf b/test/trace/selection-focus-events-5.swf
new file mode 100644
index 0000000..1d60208
Binary files /dev/null and b/test/trace/selection-focus-events-5.swf differ
diff --git a/test/trace/selection-focus-events-5.swf.trace b/test/trace/selection-focus-events-5.swf.trace
new file mode 100644
index 0000000..e69de29
diff --git a/test/trace/selection-focus-events-6.swf b/test/trace/selection-focus-events-6.swf
new file mode 100644
index 0000000..8d9c0b3
Binary files /dev/null and b/test/trace/selection-focus-events-6.swf differ
diff --git a/test/trace/selection-focus-events-6.swf.trace b/test/trace/selection-focus-events-6.swf.trace
new file mode 100644
index 0000000..f72f973
--- /dev/null
+++ b/test/trace/selection-focus-events-6.swf.trace
@@ -0,0 +1,10 @@
+(_level0.a) null ==> a
+(_level0.a) null --> _level0.a
+(_level0.a) _level0.b <== a
+(_level0.a) _level0.b <== a
+(_level0.b) _level0.a ===> b
+(_level0.b) _level0.a --> _level0.b
+(_level0.b) _level0.a ===> b
+(_level0.b) _level0.a --> _level0.b
+(_level0.b) null <=== b
+(null) _level0.b --> null
diff --git a/test/trace/selection-focus-events-7.swf b/test/trace/selection-focus-events-7.swf
new file mode 100644
index 0000000..4147cfd
Binary files /dev/null and b/test/trace/selection-focus-events-7.swf differ
diff --git a/test/trace/selection-focus-events-7.swf.trace b/test/trace/selection-focus-events-7.swf.trace
new file mode 100644
index 0000000..f72f973
--- /dev/null
+++ b/test/trace/selection-focus-events-7.swf.trace
@@ -0,0 +1,10 @@
+(_level0.a) null ==> a
+(_level0.a) null --> _level0.a
+(_level0.a) _level0.b <== a
+(_level0.a) _level0.b <== a
+(_level0.b) _level0.a ===> b
+(_level0.b) _level0.a --> _level0.b
+(_level0.b) _level0.a ===> b
+(_level0.b) _level0.a --> _level0.b
+(_level0.b) null <=== b
+(null) _level0.b --> null
diff --git a/test/trace/selection-focus-events-8.swf b/test/trace/selection-focus-events-8.swf
new file mode 100644
index 0000000..3e7e191
Binary files /dev/null and b/test/trace/selection-focus-events-8.swf differ
diff --git a/test/trace/selection-focus-events-8.swf.trace b/test/trace/selection-focus-events-8.swf.trace
new file mode 100644
index 0000000..f72f973
--- /dev/null
+++ b/test/trace/selection-focus-events-8.swf.trace
@@ -0,0 +1,10 @@
+(_level0.a) null ==> a
+(_level0.a) null --> _level0.a
+(_level0.a) _level0.b <== a
+(_level0.a) _level0.b <== a
+(_level0.b) _level0.a ===> b
+(_level0.b) _level0.a --> _level0.b
+(_level0.b) _level0.a ===> b
+(_level0.b) _level0.a --> _level0.b
+(_level0.b) null <=== b
+(null) _level0.b --> null
diff --git a/test/trace/selection-focus-events.as b/test/trace/selection-focus-events.as
new file mode 100644
index 0000000..51b918e
--- /dev/null
+++ b/test/trace/selection-focus-events.as
@@ -0,0 +1,42 @@
+// makeswf -v 7 -s 200x150 -r 1 -o movie23.swf movie23.as
+
+rectangle = function (mc, color, x, y, w, h)
+{
+  mc.beginFill (color);
+  mc.moveTo (x, y);
+  mc.lineTo (x, y + h);
+  mc.lineTo (x + w, y + h);
+  mc.lineTo (x + w, y);
+  mc.lineTo (x, y);
+  mc.endFill ();
+};
+
+function show (string)
+{
+  trace ("(" + Selection.getFocus() + ") " + string);
+};
+
+o = { onKeyDown: function () { show ("keyDown: " + Key.getCode ()); },
+      onKeyUp: function () { show ("keyUp: " + Key.getCode ()); } };
+Key.addListener (o);
+o = { onSetFocus: function (from, to) { show (from + " --> " + to); } };
+Selection.addListener (o);
+
+
+createEmptyMovieClip ("a", 0);
+rectangle (a, 0xff, 0, 0, 50, 50);
+a.focusEnabled = true;
+a.tabEnabled = true;
+a.onKillFocus = function(next) { show (next + " <== a"); if (!_root.i) { _root.i = 1; Selection.setFocus (b); }; };
+a.onSetFocus = function(next) { show (next + " ==> a"); };
+Selection.setFocus (a);
+createEmptyMovieClip ("b", 1);
+rectangle (b, 0xff, 70, 70, 50, 50);
+b.focusEnabled = true;
+b.tabEnabled = true;
+b.onKillFocus = function(next) { show (next + " <=== b"); if (!_root.i) { _root.i = 1; Selection.setFocus (a); }; };
+b.onSetFocus = function(next) { show (next + " ===> b"); };
+Selection.setFocus (b);
+
+Selection.setFocus (null);
+getURL ("fscommand:quit", "");
commit ee33ca6fc42bec3b418327635c0e6616f925ca32
Author: Benjamin Otte <otte at gnome.org>
Date:   Sat Mar 29 17:31:56 2008 +0100

    remove crap from header

diff --git a/vivified/code/Makefile.am b/vivified/code/Makefile.am
index 57a7b4c..62d1ae3 100644
--- a/vivified/code/Makefile.am
+++ b/vivified/code/Makefile.am
@@ -80,15 +80,3 @@ vivi_decompile_CFLAGS =  $(GLOBAL_CFLAGS) $(SWFDEC_CFLAGS)
 vivi_decompile_LDFLAGS = $(SWFDEC_LIBS)
 vivi_decompile_LDADD = libvivified-compiler.la
 
-if SECRET_TEST_CODE
-noinst_PROGRAMS += vivi-decompile-gtk
-
-vivi_decompile_gtk_SOURCES = \
-	vivi_code_gtk_printer.c \
-	vivi_code_gtk_printer.h \
-	gtk_decompiler.c
-
-vivi_decompile_gtk_CFLAGS =  $(GLOBAL_CFLAGS) $(SWFDEC_CFLAGS) $(GTK_CFLAGS)
-vivi_decompile_gtk_LDFLAGS = $(SWFDEC_LIBS) $(GTK_LIBS)
-vivi_decompile_gtk_LDADD = libvivified-compiler.la
-endif


More information about the Swfdec-commits mailing list