|
List Info
Thread: gtk, gstreamer movie window = problem
|
|
| gtk, gstreamer movie window = problem |

|
2006-10-23 19:27:22 |
Hi!
In my gstreamer movie player I have connected gstreamer
movie window
with gtk menu (gstreamer window is inside gtk app window)
using this
code:
static void
cb_expose (GtkWidget * w, GdkEventExpose * ev, GstElement *
e)
{
if (GST_IS_X_OVERLAY (e) &&
!GTK_WIDGET_NO_WINDOW (w) &&
GTK_WIDGET_REALIZED (w)) {
gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (e),
GDK_WINDOW_XWINDOW (w->window));
}
}
(...)
g_signal_connect (content, "expose-event",
G_CALLBACK (cb_expose),videosink );
Everything is ok when I start app (movie window is in right
place in
app window) but when I click on some item on maemo system
menu (right
top border of the screen ) eg. volume control and I click
back on my
app, window with my gtk elements disappears (probably is
killed) and
gstreamer movie window is the only window left from my app
(it looks
like when you start raw pipeline with some movie, without
any
additional gtk elements).
Do you have any ideas??? Please help me.
Bart
_______________________________________________
maemo-developers mailing list
maemo-developers maemo.org
h
ttps://maemo.org/mailman/listinfo/maemo-developers
|
|
| gtk, gstreamer movie window = problem |

|
2006-10-23 21:26:47 |
On 10/23/06, cmonst <cmonst gmail.com> wrote:
> Hi!
>
> In my gstreamer movie player I have connected gstreamer
movie window
> with gtk menu (gstreamer window is inside gtk app
window) using this
> code:
>
> static void
> cb_expose (GtkWidget * w, GdkEventExpose * ev,
GstElement * e)
> {
> if (GST_IS_X_OVERLAY (e) &&
> !GTK_WIDGET_NO_WINDOW (w) &&
GTK_WIDGET_REALIZED (w)) {
> gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (e),
> GDK_WINDOW_XWINDOW (w->window));
>
> }
> }
>
> (...)
>
> g_signal_connect (content, "expose-event",
G_CALLBACK (cb_expose),videosink );
>
>
> Everything is ok when I start app (movie window is in
right place in
> app window) but when I click on some item on maemo
system menu (right
> top border of the screen ) eg. volume control and I
click back on my
> app, window with my gtk elements disappears (probably
is killed) and
> gstreamer movie window is the only window left from my
app (it looks
> like when you start raw pipeline with some movie,
without any
> additional gtk elements).
>
> Do you have any ideas??? Please help me.
Are you sure your application is being killed? My advice is
try to
check if it segfaults somehow by running it from xterm.
Regards, Etrunko.
--
Eduardo de Barros Lima
INdT - Instituto Nokia de Tecnologia
eblima gmail.com
_______________________________________________
maemo-developers mailing list
maemo-developers maemo.org
h
ttps://maemo.org/mailman/listinfo/maemo-developers
|
|
| gtk, gstreamer movie window = problem |

|
2006-10-24 11:52:38 |
2006/10/23, cmonst <cmonst gmail.com>:
> Hi!
>
> In my gstreamer movie player I have connected gstreamer
movie window
> with gtk menu (gstreamer window is inside gtk app
window) using this
> code:
>
> static void
> cb_expose (GtkWidget * w, GdkEventExpose * ev,
GstElement * e)
> {
> if (GST_IS_X_OVERLAY (e) &&
> !GTK_WIDGET_NO_WINDOW (w) &&
GTK_WIDGET_REALIZED (w)) {
> gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (e),
> GDK_WINDOW_XWINDOW (w->window));
>
> }
> }
>
> (...)
>
> g_signal_connect (content, "expose-event",
G_CALLBACK (cb_expose),videosink );
>
As described in
http://gstreamer.freedesktop.org/data/doc/gst
reamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs
-gstxoverlay.html#desc
you need to set it in a message handler in order to set it
at the right time.
> Everything is ok when I start app (movie window is in
right place in
> app window) but when I click on some item on maemo
system menu (right
> top border of the screen ) eg. volume control and I
click back on my
> app, window with my gtk elements disappears (probably
is killed) and
> gstreamer movie window is the only window left from my
app (it looks
> like when you start raw pipeline with some movie,
without any
> additional gtk elements).
This sounds indeed like the element creates the window
itself instead
of using the one you want.
--
Kalle Vahlman, zuh iki.fi
Powered by http://movial.fi
Interesting stuff at http://syslog.movial.fi
_______________________________________________
maemo-developers mailing list
maemo-developers maemo.org
h
ttps://maemo.org/mailman/listinfo/maemo-developers
|
|
| gtk, gstreamer movie window = problem |

|
2006-10-26 12:11:54 |
Hi!
I tried to solve this problem but still the same happens.
I'm running
program from xterm so I think I don't need
osso_initialize(), and on
console I don't get any error messages. This is code I'm
using (I'm
out of ideas what can be wrong):
//main gui function
gui(){
HildonProgram *app;
/* Create the hildon application and setup the title */
app = HILDON_PROGRAM (hildon_program_get_instance ());
g_set_application_name ("Menu Example App");
/* Create HildonAppView and set it to HildonApp */
appview = HILDON_WINDOW (hildon_window_new ());
hildon_program_add_window (app, appview);
/* Create menu for view */
create_menu (appview);
///box1 = gtk_hbox_new (FALSE, 0);
///box2 = gtk_vbox_new (homogeneous, spacing);
///label = gtk_label_new ("Volume:");
///gtk_misc_set_alignment (GTK_MISC (label), 0, 0);
///gtk_box_pack_start (GTK_BOX (box2), label, FALSE, FALSE,
0);
///gtk_widget_show (label);
///adj1 = gtk_adjustment_new (1.0, 0.0, 4.0, 0.1, 1.0,
1.0);
///g_signal_connect (G_OBJECT (adj1),
"value_changed",G_CALLBACK
(cb_digits_scale), NULL);
///scale = gtk_vscrollbar_new (GTK_ADJUSTMENT (adj1));
///gtk_box_pack_start (GTK_BOX (box2), scale, TRUE, TRUE,
0);
///gtk_box_pack_start (GTK_BOX (box1), box2, expand, fill,
padding);
content = gtk_event_box_new ();
gtk_container_add (GTK_CONTAINER (appview), content);
GstBus *bus;
bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
gst_bus_set_sync_handler (bus, (GstBusSyncHandler)
create_window, NULL);
gst_object_unref (bus);
g_signal_connect (content, "expose-event",
G_CALLBACK (cb_expose), videosink);
//gtk_box_pack_start (GTK_BOX (box1), content, TRUE, TRUE,
padding);
///gtk_container_add (GTK_CONTAINER (appview), box1);
///gtk_widget_show (box1);
gtk_widget_show_all (appview);
g_signal_connect(G_OBJECT(appview),
"delete_event",
G_CALLBACK(item_close_cb), NULL);
}
//callback functins
static GstBusSyncReply
create_window (GstBus * bus, GstMessage * message,
GstPipeline * pipeline)
{
XGCValues values;
if (GST_MESSAGE_TYPE (message) != GST_MESSAGE_ELEMENT)
return GST_BUS_PASS;
if (!gst_structure_has_name (message->structure,
"prepare-xwindow-id"))
return GST_BUS_PASS;
// ignore anything but 'prepare-xwindow-id' element
messages
content = gtk_event_box_new ();
gst_x_overlay_set_xwindow_id (GST_X_OVERLAY
(GST_MESSAGE_SRC (message)), content->window);
return GST_BUS_DROP;
}
cb_expose (GtkWidget * w, GdkEventExpose * ev, GstElement *
e)
{
if (GST_IS_X_OVERLAY (e) &&
!GTK_WIDGET_NO_WINDOW (w) &&
GTK_WIDGET_REALIZED (w))
{
gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (e),
GDK_WINDOW_XWINDOW (w->window));
}
}
>
> As described in
> http://gstreamer.freedesktop.org/data/doc/gst
reamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs
-gstxoverlay.html#desc
>
> you need to set it in a message handler in order to set
it at the right time.
>
>
> This sounds indeed like the element creates the window
itself instead
> of using the one you want.
>
> --
> Kalle Vahlman, zuh iki.fi
> Powered by http://movial.fi
> Interesting stuff at http://syslog.movial.fi
>
--
Regards,
-= Bartosz Put =-
_______________________________________________
maemo-developers mailing list
maemo-developers maemo.org
h
ttps://maemo.org/mailman/listinfo/maemo-developers
|
|
| gtk, gstreamer movie window = problem |

|
2006-10-26 13:28:28 |
2006/10/26, cmonst <cmonst gmail.com>:
> Hi!
> I tried to solve this problem but still the same
happens. I'm running
> program from xterm so I think I don't need
osso_initialize(), and on
> console I don't get any error messages.
Depends, if you
a) have a .desktop file for it
b) define a service there
then you need to call it, otherwise it won't matter I
guess... (in the
"will it be killed" context).
> This is code I'm using (I'm
> out of ideas what can be wrong):
>
> //main gui function
> gui(){
> HildonProgram *app;
>
> /* Create the hildon application and setup the
title */
> app = HILDON_PROGRAM
(hildon_program_get_instance ());
> g_set_application_name ("Menu Example
App");
>
> /* Create HildonAppView and set it to HildonApp
*/
> appview = HILDON_WINDOW (hildon_window_new ());
>
> hildon_program_add_window (app, appview);
>
>
> /* Create menu for view */
> create_menu (appview);
>
>
> ///box1 = gtk_hbox_new (FALSE, 0);
>
>
>
> ///box2 = gtk_vbox_new (homogeneous, spacing);
> ///label = gtk_label_new ("Volume:");
> ///gtk_misc_set_alignment (GTK_MISC (label), 0,
0);
> ///gtk_box_pack_start (GTK_BOX (box2), label,
FALSE, FALSE, 0);
>
> ///gtk_widget_show (label);
>
> ///adj1 = gtk_adjustment_new (1.0, 0.0, 4.0,
0.1, 1.0, 1.0);
> ///g_signal_connect (G_OBJECT (adj1),
"value_changed",G_CALLBACK
> (cb_digits_scale), NULL);
> ///scale = gtk_vscrollbar_new (GTK_ADJUSTMENT
(adj1));
> ///gtk_box_pack_start (GTK_BOX (box2), scale,
TRUE, TRUE, 0);
>
>
>
> ///gtk_box_pack_start (GTK_BOX (box1), box2,
expand, fill, padding);
>
>
> content = gtk_event_box_new ();
> gtk_container_add (GTK_CONTAINER (appview),
content);
>
> GstBus *bus;
> bus = gst_pipeline_get_bus (GST_PIPELINE
(pipeline));
> gst_bus_set_sync_handler (bus,
(GstBusSyncHandler) create_window, NULL);
> gst_object_unref (bus);
>
>
> g_signal_connect (content,
"expose-event", G_CALLBACK (cb_expose),
videosink);
>
>
> //gtk_box_pack_start (GTK_BOX (box1), content,
TRUE, TRUE, padding);
>
>
> ///gtk_container_add (GTK_CONTAINER (appview),
box1);
> ///gtk_widget_show (box1);
>
>
> gtk_widget_show_all (appview);
>
> g_signal_connect(G_OBJECT(appview),
"delete_event",
> G_CALLBACK(item_close_cb), NULL);
>
> }
>
> //callback functins
> static GstBusSyncReply
> create_window (GstBus * bus, GstMessage * message,
GstPipeline * pipeline)
> {
> XGCValues values;
>
> if (GST_MESSAGE_TYPE (message) !=
GST_MESSAGE_ELEMENT)
> return GST_BUS_PASS;
>
> if (!gst_structure_has_name (message->structure,
"prepare-xwindow-id"))
> return GST_BUS_PASS;
>
> // ignore anything but 'prepare-xwindow-id'
element messages
>
> content = gtk_event_box_new ();
You are creating this again here ;)
> gst_x_overlay_set_xwindow_id (GST_X_OVERLAY
> (GST_MESSAGE_SRC
(message)), content->window);
You are giving the window pointer to the function, instead
of the X id
of it. Use the GDK_WINDOW_XID() macro to get the X window id
for the
window.
You also need to be sure the GdkWindow of the event box is
already
created when you set it (otherwise the window pointer might
be NULL or
whatever), this can be done by calling gtk_widget_realize()
on the
event box. I suggest doing it just before entering the gtk
main loop.
> cb_expose (GtkWidget * w, GdkEventExpose * ev,
GstElement * e)
> {
> if (GST_IS_X_OVERLAY (e) &&
> !GTK_WIDGET_NO_WINDOW (w) &&
GTK_WIDGET_REALIZED (w))
> {
> gst_x_overlay_set_xwindow_id
(GST_X_OVERLAY (e),
>
GDK_WINDOW_XWINDOW (w->window));
>
> }
> }
This should be removed too, as it may conflict with the
setting above
(and the call to gst_x_overlay_set_xwindow_id() should
happen exactly
once AFAIK).
--
Kalle Vahlman, zuh iki.fi
Powered by http://movial.fi
Interesting stuff at http://syslog.movial.fi
_______________________________________________
maemo-developers mailing list
maemo-developers maemo.org
h
ttps://maemo.org/mailman/listinfo/maemo-developers
|
|
[1-5]
|
|