author | simon <simon> | 2002-12-08 20:27:19 (UTC) |
---|---|---|
committer | simon <simon> | 2002-12-08 20:27:19 (UTC) |
commit | ec91b042d8312f83027beb357448fe02a13e8923 (patch) (side-by-side diff) | |
tree | c61b89e7fc7f22bb1dfaa19f2597c5bdae903572 | |
parent | ce313e53a56591fd883348f5e265606865fdcb50 (diff) | |
download | opie-ec91b042d8312f83027beb357448fe02a13e8923.zip opie-ec91b042d8312f83027beb357448fe02a13e8923.tar.gz opie-ec91b042d8312f83027beb357448fe02a13e8923.tar.bz2 |
- properly shut down xine in the destructor. fixes crashes when switching
skins
-rw-r--r-- | noncore/multimedia/opieplayer2/lib.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/noncore/multimedia/opieplayer2/lib.cpp b/noncore/multimedia/opieplayer2/lib.cpp index 4a96408..1b5fd51 100644 --- a/noncore/multimedia/opieplayer2/lib.cpp +++ b/noncore/multimedia/opieplayer2/lib.cpp @@ -91,64 +91,71 @@ Lib::Lib( XineVideoWidget* widget ) { xine_config_load( m_xine, str.data() ); xine_init( m_xine ); // allocate oss for sound // and fb for framebuffer m_audioOutput = xine_open_audio_driver( m_xine, "oss", NULL ); m_videoOutput = ::init_video_out_plugin( m_xine, NULL, xine_display_frame, this ); //xine_open_video_driver( m_xine, NULL, XINE_VISUAL_TYPE_FB, NULL); // null_display_handler( m_videoOutput, xine_display_frame, this ); m_stream = xine_stream_new (m_xine, m_audioOutput, m_videoOutput ); if (m_wid != 0 ) { printf( "!0\n" ); resize ( m_wid-> size ( ) ); ::null_set_mode( m_videoOutput, qt_screen->depth(), qt_screen->pixelType() ); m_wid->repaint(); } m_queue = xine_event_new_queue (m_stream); xine_event_create_listener_thread (m_queue, xine_event_handler, this); } Lib::~Lib() { // free( m_config ); + + xine_close( m_stream ); + + xine_event_dispose_queue( m_queue ); + + xine_dispose( m_stream ); + xine_exit( m_xine ); /* FIXME either free or delete but valgrind bitches against both */ //free( m_videoOutput ); //delete m_audioOutput; } void Lib::resize ( const QSize &s ) { if ( s. width ( ) && s. height ( ) ) { ::null_set_gui_width( m_videoOutput, s. width() ); ::null_set_gui_height( m_videoOutput, s. height() ); } } int Lib::majorVersion() { int major, minor, sub; xine_get_version ( &major, &minor, &sub ); return major; } int Lib::minorVersion() { int major, minor, sub; xine_get_version ( &major, &minor, &sub ); return minor; } int Lib::subVersion() { int major, minor, sub; xine_get_version ( &major, &minor, &sub ); return sub; } int Lib::play( const QString& fileName, int startPos, int start_time ) { |