On Sun, Aug 21, 2011 at 3:45 PM, Slow Robot <[email protected]> wrote:

>
> Example code and stack trace at the end of the email.  Steps to reproduce:
> pass the path to a video file (one playable by Phonon) as a command line
> argument, click the delete button, and then move the window.  I get this on
> MacOS 10.7 / Apple Python 2.7 / PySide 1.0.5.  I also got it on MacOS 10.6
> and previous versions of Python and PySide.  I do not seem able to reproduce
> under Linux, though.  It seems to have something to do with the interaction
> of tracking the Phonon objects in an array and also deleting them.  This is
> just stripped down example code to make the problem as simple as possible,
> but my goal is to be able to track several Phonon VideoWidgets in an array,
> and also be able to delete them (both remove them from the array and delete
> the VideoWidgets and their associated MediaObjects, to free up their
> memory).  Any help appreciated.  Thanks,
>
>
This is still happening with 1.0.6


> Code:
>
> #!/usr/bin/env python
>
> import sys
> from PySide.QtGui import QApplication, QWidget, QPushButton, QGridLayout
> from PySide.phonon import Phonon
>
> def video(file):
>   global vwidgets
>   global mobjects
>   media_source = Phonon.MediaSource(file)
>   media_object = Phonon.MediaObject()
>   media_object.setCurrentSource(
> media_source)
>   video_widget = Phonon.VideoWidget()
>   Phonon.createPath(media_object, video_widget)
>   media_object.play()
>   vwidgets.append(video_widget)
>   mobjects.append(media_object)
>
> def delvideo():
>   global vwidgets
>   global mobjects
>   vw = vwidgets[0]
>   mo = mobjects[0]
>   vwidgets.remove(vw)
>   mobjects.remove(mo)
>   mo.deleteLater()
>   vw.deleteLater()
>
> vwidgets = []
> mobjects = []
>
> app = QApplication([])
> app.setApplicationName('test')
>
> video(sys.argv[1])
>
> button1 = QPushButton('delete')
> button1.clicked.connect(delvideo)
>
> layout = QGridLayout()
> layout.addWidget(vwidgets[0], 0, 0)
> layout.addWidget(button1, 0, 1)
>
> window = QWidget()
> window.setLayout(layout)
> window.show()
>
> app.exec_()
>
> Stack:
>
> Application Specific Information:
> objc_msgSend() selector name: _windowFrameDidChange:
> objc[32009]: garbage collection is OFF
>
> Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
> 0   libobjc.A.dylib                   0x00007fff8f8d9e90 objc_msgSend + 16
> 1   com.apple.Foundation              0x00007fff8b442716
> __-[NSNotificationCenter addObserver:selector:name:object:]_block_invoke_1 +
> 47
> 2   com.apple.CoreFoundation          0x00007fff8df1d51a
> _CFXNotificationPost + 2634
> 3   com.apple.Foundation              0x00007fff8b42e9cb
> -[NSNotificationCenter postNotificationName:object:userInfo:] + 65
> 4   com.apple.AppKit                  0x00007fff8ead941f -[NSWindow
> _windowMovedToRect:] + 247
> 5   com.apple.AppKit                  0x00007fff8ead9311 -[NSWindow
> _windowMoved:] + 158
> 6   com.apple.AppKit                  0x00007fff8ea0aad2 -[NSWindow
> sendEvent:] + 7404
> 7   QtGui                             0x000000010c266251 -[QCocoaWindow
> sendEvent:] + 241
> 8   com.apple.AppKit                  0x00007fff8e9a2ae8 -[NSApplication
> sendEvent:] + 4592
> 9   QtGui                             0x000000010c26992a -[QNSApplication
> sendEvent:] + 74
> 10  com.apple.AppKit                  0x00007fff8e93942b -[NSApplication
> run] + 548
> 11  QtGui                             0x000000010c273614
> QEventDispatcherMac::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) +
> 1588
> 12  QtCore                            0x000000010afbab34
> QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 68
> 13  QtCore                            0x000000010afbae54
> QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 180
> 14  QtCore                            0x000000010afbc47c
> QCoreApplication::exec() + 188
> 15  QtGui.so                          0x000000010b44b552
> Sbk_QApplicationFunc_exec_ + 34
> 16  org.python.python                 0x000000010a841b58 PyEval_EvalFrameEx
> + 13318
> 17  org.python.python                 0x000000010a844cd8 PyEval_EvalCodeEx
> + 1996
> 18  org.python.python                 0x000000010a844d4d PyEval_EvalCode +
> 54
> 19  org.python.python                 0x000000010a85c08f 0x10a7ba000 +
> 663695
> 20  org.python.python                 0x000000010a85c14f PyRun_FileExFlags
> + 157
> 21  org.python.python                 0x000000010a85d2a2
> PyRun_SimpleFileExFlags + 392
> 22  org.python.python                 0x000000010a86d2af Py_Main + 2715
> 23  org.python.python                 0x000000010a7b1e88 0x10a7b1000 + 3720
>
_______________________________________________
PySide mailing list
[email protected]
http://lists.pyside.org/listinfo/pyside

Reply via email to