Goedeavond,
Ik ben bezig met een app te maken die gebruikt maakt van gstreamer voor X11. Deze app laat 2 video's zien in twee verschillende resoluties. Elke video die wordt weergegeven wordt in een x11_subwindow afgespeelt. Nu is het probleem zo dat als ik het eerste filmpje afspeel (die groter wordt weergeven) ik bij het tweede filmpje de subwindow van het eerste filmpje nog zie (als ik een achtergrond gebruik die niet zwart is). Nu dacht ik oke na het afspelen van een filmpje close ik de sub window. Echter krijg ik dan een segmentation fault.
Ik heb gegoogled op XdestroyWindow segmentation fault maar ook zonder resultaat.
Ik heb zelf al geprobeerd met XdestroyWindow, met gdb gekeken, zonder resultaat. Wil graag kunnen printen wat er in de screen en window staat maar weet niet of dit mogelijk is.
Wie o wie kan mij in de goede richting brengen. Zit er nu echt al paar dagen mee overhoop.
PS ben beginner met X11 programming.
Code:
Ik ben bezig met een app te maken die gebruikt maakt van gstreamer voor X11. Deze app laat 2 video's zien in twee verschillende resoluties. Elke video die wordt weergegeven wordt in een x11_subwindow afgespeelt. Nu is het probleem zo dat als ik het eerste filmpje afspeel (die groter wordt weergeven) ik bij het tweede filmpje de subwindow van het eerste filmpje nog zie (als ik een achtergrond gebruik die niet zwart is). Nu dacht ik oke na het afspelen van een filmpje close ik de sub window. Echter krijg ik dan een segmentation fault.
Ik heb gegoogled op XdestroyWindow segmentation fault maar ook zonder resultaat.
Ik heb zelf al geprobeerd met XdestroyWindow, met gdb gekeken, zonder resultaat. Wil graag kunnen printen wat er in de screen en window staat maar weet niet of dit mogelijk is.
Wie o wie kan mij in de goede richting brengen. Zit er nu echt al paar dagen mee overhoop.
PS ben beginner met X11 programming.
Code:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
| Window set_gst_sdl_video_overlay (GstElement *pipeline,int x,int y,int width,int height) { GstElement *videosink; SDL_SysWMinfo sdl_info; Window play_win; sdl_info = get_sdl_wm_info (); if (!sdl_info.version.major) return 0; g_object_get (pipeline, "video-sink", &videosink, NULL); if (videosink && GST_IS_X_OVERLAY (videosink)) { sdl_info.info.x11.lock_func (); g_message("video 1"); play_win = create_x11_subwindow (sdl_info.info.x11.display, sdl_info.info.x11.window, x, y, width, height); sdl_info.info.x11.unlock_func (); gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (videosink), play_win); } else g_message("video else"); play_win = 0; g_object_unref (videosink); return play_win; } void main_loop (char *playfile) { SDL_SysWMinfo sdl_info; Display *currentDis; currentDis = sdl_info.info.x11.display; playbin = create_gst_playbin (); Window testWindow; testWindow = set_gst_sdl_video_overlay (playbin, 45, 45, 1080, 768); if (!testWindow) fprintf (stderr, "Not using Window overlay.\n"); XDestroySubwindows(currentDis,testWindow); //segmentation fault return; } |
[ Voor 131% gewijzigd door Verwijderd op 15-07-2010 23:14 ]