diff --git a/kmediaplayer/kmediaplayerpart.cpp b/kmediaplayer/kmediaplayerpart.cpp index c76dd429..a1393711 100644 --- a/kmediaplayer/kmediaplayerpart.cpp +++ b/kmediaplayer/kmediaplayerpart.cpp @@ -22,6 +22,7 @@ #include #include #include +#include K_PLUGIN_FACTORY(KMediaPlayerPartFactory, registerPlugin();) // produce a factory K_EXPORT_PLUGIN(KMediaPlayerPartFactory(KAboutData( @@ -45,12 +46,15 @@ KMediaPlayerPart::KMediaPlayerPart(QWidget *parentWidget, QObject *parent, const Q_UNUSED(arguments); setComponentData(KMediaPlayerPartFactory::componentData()); setWidget(m_player); + setAutoDeleteWidget(false); // will be deleted in destructor, if still valid m_player->player()->setPlayerID("kmediaplayerpart"); } KMediaPlayerPart::~KMediaPlayerPart() { - delete m_player; + if (m_player) { + delete m_player.data(); + } } bool KMediaPlayerPart::openUrl(const KUrl &url) diff --git a/kmediaplayer/kmediaplayerpart.h b/kmediaplayer/kmediaplayerpart.h index c6ada40b..f1542717 100644 --- a/kmediaplayer/kmediaplayerpart.h +++ b/kmediaplayer/kmediaplayerpart.h @@ -19,6 +19,7 @@ #ifndef KMEDIAPART_H #define KMEDIAPART_H +#include #include #include #include @@ -37,7 +38,7 @@ public Q_SLOTS: bool openUrl(const KUrl &url) final; private: - KMediaWidget *m_player; + QPointer m_player; }; #endif // KMEDIAPART_H