Message: 3
Date: Wed, 9 Sep 2009 10:35:22 +0800 (CST)
From: zhang...@nfs-china.com
To: dev@moblin.org
Subject: [Moblin Dev] [Moblin] How to use the flash plugin to play on
the web browser
Message-ID: <39635.124.16.138.52.1252463722.squir...@124.16.138.3>
Content-Type: text/plain;charset=gb2312
I want to play flash on the browser, but I don't how to do.
Please tell me how to do, thanks.
Is install any plugin and rpm package?
-zhangkun
* If you are talking about playing flash on moblin-web-browser, you
could download/install the flash plugin from the uri below (sorry please
do it manually this while, but the plugin installation feature will come
soon):
https://addons.mozilla.org/en-US/firefox/browse/type:7
Once the installation done, please create a soft link to libflashplayer.so:
ln -s /path/to/libflashplayer.so ~/.mozilla/plugin/libflashplayer.so
This is all you need to do to play flash in moblin-web-browser I think.
* If you want flash to be played by clutter-mozembed/tests/test-mozembed
demo, you need some extra work to hack the demo program. We are
preparing some documentations on this. But before that doc is ready,
please refer to patch below (make sure the plugin is already installed).
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 43d99a8..a8ec919 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -7,7 +7,8 @@ AM_CPPFLAGS = \
AM_LDFLAGS = \
$(CLUTTER_LIBS) \
$(MOZILLA_LIBS) \
- $(GTK_LIBS)
+ $(GTK_LIBS) \
+ -lclutter-gtk-0.10
noinst_PROGRAMS = \
test-mozembed \
diff --git a/tests/test-mozembed.c b/tests/test-mozembed.c
index 0fea74f..6184a7a 100644
--- a/tests/test-mozembed.c
+++ b/tests/test-mozembed.c
@@ -6,6 +6,8 @@
#ifdef SUPPORT_PLUGINS
#include <gtk/gtk.h>
+#include <clutter/x11/clutter-x11.h>
+#include <clutter-gtk/clutter-gtk.h>
#endif
static void
@@ -93,8 +95,25 @@ close_cb (ClutterMozEmbed *mozembed,
clutter_actor_destroy (stage);
}
static void
-new_window_cb (ClutterMozEmbed *mozembed, ClutterActor *new_mozembed)
+new_window_cb (ClutterMozEmbed *mozembed, ClutterActor **new_mozembed)
{
ClutterTimeline *timeline;
ClutterBehaviour *z_rot;
@@ -102,15 +121,21 @@ new_window_cb (ClutterMozEmbed *mozembed, ClutterActor
*new_mozembed)
stage = clutter_stage_new ();
+ *new_mozembed = clutter_mozembed_new_for_new_window();
+
clutter_actor_set_size (stage, 640, 480);
- clutter_container_add_actor (CLUTTER_CONTAINER (stage), new_mozembed);
- clutter_actor_set_size (new_mozembed, 640, 480);
- g_signal_connect (new_mozembed, "size-request",
+ clutter_container_add_actor (CLUTTER_CONTAINER (stage), *new_mozembed);
+ clutter_actor_set_size (*new_mozembed, 640, 480);
+ g_signal_connect (*new_mozembed, "size-request",
G_CALLBACK (size_request_cb), stage);
- g_signal_connect (new_mozembed, "closed",
+ g_signal_connect (*new_mozembed, "closed",
G_CALLBACK (close_cb), stage);
- g_signal_connect (new_mozembed, "download",
+ g_signal_connect (*new_mozembed, "download",
G_CALLBACK (download_cb), NULL);
timeline = clutter_timeline_new (8000);
z_rot =
@@ -122,14 +147,35 @@ new_window_cb (ClutterMozEmbed *mozembed, ClutterActor
*new_mozembed)
360);
clutter_behaviour_rotate_set_center (CLUTTER_BEHAVIOUR_ROTATE (z_rot),
320, 240, 0);
- clutter_behaviour_apply (z_rot, new_mozembed);
+ clutter_behaviour_apply (z_rot, *new_mozembed);
clutter_timeline_set_loop (timeline, TRUE);
//clutter_timeline_start (timeline);
clutter_actor_show (stage);
- clutter_stage_set_key_focus (CLUTTER_STAGE (stage), new_mozembed);
+ clutter_stage_set_key_focus (CLUTTER_STAGE (stage), *new_mozembed);
}
+#ifdef SUPPORT_PLUGINS
+static GdkFilterReturn
+gdk_to_clutter_event_forward (GdkXEvent *xevent,
+ GdkEvent *event,
+ gpointer data)
+{
+ switch (clutter_x11_handle_event ((XEvent*)xevent))
+ {
+ default:
+ case CLUTTER_X11_FILTER_CONTINUE:
+ return GDK_FILTER_CONTINUE;
+ case CLUTTER_X11_FILTER_TRANSLATE:
+ return GDK_FILTER_TRANSLATE;
+ case CLUTTER_X11_FILTER_REMOVE:
+ return GDK_FILTER_REMOVE;
+ }
+
+ return GDK_FILTER_CONTINUE;
+}
+#endif
+
int
main (int argc, char **argv)
{
@@ -138,13 +184,25 @@ main (int argc, char **argv)
ClutterActor *stage, *mozembed;
#ifdef SUPPORT_PLUGINS
- gtk_init (&argc, &argv);
-#endif
+ if (!gtk_clutter_init (&argc, &argv))
+ g_error ("Error initialising GtkClutter");
- clutter_init (&argc, &argv);
+ gdk_window_add_filter (NULL, gdk_to_clutter_event_forward, NULL);
+
+ GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
+
+ GtkClutterEmbed *clutter = GTK_CLUTTER_EMBED(gtk_clutter_embed_new());
+ gtk_widget_set_size_request ((GtkWidget*)clutter, 800, 600);
+ gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (clutter));
+
+ stage = gtk_clutter_embed_get_stage (clutter);
+#else
+ clutter_init (&argc, &argv);
stage = clutter_stage_get_default ();
clutter_actor_set_size (stage, 800, 600);
+#endif
mozembed = clutter_mozembed_new ();
clutter_container_add_actor (CLUTTER_CONTAINER (stage), mozembed);
@@ -183,6 +241,10 @@ main (int argc, char **argv)
G_CALLBACK (new_window_cb), NULL);
g_signal_connect (mozembed, "download",
G_CALLBACK (download_cb), NULL);
+#ifdef SUPPORT_ZOOM_WINDOW
+ g_signal_connect (mozembed, "zoom-window",
+ G_CALLBACK (zoom_window_cb), NULL);
+#endif
if (argc == 2)
clutter_mozembed_open (CLUTTER_MOZEMBED (mozembed), argv[1]);
@@ -190,11 +252,18 @@ main (int argc, char **argv)
clutter_mozembed_open (CLUTTER_MOZEMBED (mozembed),
"http://news.google.co.uk/");
+#ifdef SUPPORT_PLUGINS
+ gtk_widget_show_all (window);
+#endif
clutter_actor_show (stage);
clutter_stage_set_key_focus (CLUTTER_STAGE (stage), mozembed);
+#ifdef SUPPORT_PLUGINS
+ gtk_main();
+#else
clutter_main ();
+#endif
return 0;
}
Regards, Yong
_______________________________________________
Moblin dev Mailing List
dev@moblin.org
To manage or unsubscribe from this mailing list visit:
http://lists.moblin.org/listinfo/dev or your user account on http://moblin.org
once logged in.
For more information on the Moblin Developer Mailing lists visit:
http://moblin.org/community/mailing-lists