diff -ur kde-workspace-4.7.4.orig/plasma/generic/dataengines/tasks/tasksengine.cpp kde-workspace-4.7.4/plasma/generic/dataengines/tasks/tasksengine.cpp --- kde-workspace-4.7.4.orig/plasma/generic/dataengines/tasks/tasksengine.cpp 2012-02-11 11:15:53.825161848 -0600 +++ kde-workspace-4.7.4/plasma/generic/dataengines/tasks/tasksengine.cpp 2012-02-11 11:16:34.377165435 -0600 @@ -80,7 +80,12 @@ void TasksEngine::startupRemoved(StartupPtr startup) { Q_ASSERT(startup); - removeSource(getStartupName(startup)); + // there is an event loop ref counting bug in Qt that prevents deleteLater() from working + // properly, so we need to remove the source our selves with a single shot + //removeSource(getStartupName(startup)); + if (Plasma::DataContainer *container = containerForSource(getStartupName(startup))) { + QTimer::singleShot(0, container, SLOT(deleteLater())); + } } void TasksEngine::taskAdded(TaskPtr task) @@ -92,7 +97,12 @@ void TasksEngine::taskRemoved(TaskPtr task) { Q_ASSERT(task); - removeSource(getTaskName(task)); + // there is an event loop ref counting bug in Qt that prevents deleteLater() from working + // properly, so we need to remove the source our selves with a single shot + //removeSource(getTaskName(task)); + if (Plasma::DataContainer *container = containerForSource(getTaskName(task))) { + QTimer::singleShot(0, container, SLOT(deleteLater())); + } } void TasksEngine::addStartup(StartupPtr startup)