Description: Do proper temporary file creation
 Upstream is using predictable temporary file names. Fix this in Debian
 for now by using QTemporaryFile. This additionally ensures removal of
 temporary files upon exit.
Author: Jakob Haufe <sur5r@sur5r.net>
Bug-Debian: http://bugs.debian.org/644935

diff --git a/src/temporary.cpp b/src/temporary.cpp
index 913d244..3e5e89f 100644
--- a/src/temporary.cpp
+++ b/src/temporary.cpp
@@ -22,51 +22,26 @@ $END_LICENSE */
 #include "constants.h"
 #include "compatibility/pathsservice.h"
 
-static QList<QString> paths;
-#ifdef APP_LINUX
-static QString userName;
-#endif
+static QList<QTemporaryFile*> tempfiles;
 
 Temporary::Temporary() { }
 
 QString Temporary::filename() {
-    static const QString tempDir = Paths::getTempLocation();
+    QTemporaryFile *tempfile = new QTemporaryFile(QDir::tempPath() + "/" + Constants::UNIX_NAME + "-XXXXXX");
+    tempfiles += tempfile;
 
-    QString tempFile = tempDir + "/" + Constants::UNIX_NAME + "-" + QString::number(qrand());
-
-#ifdef APP_LINUX
-    if (userName.isNull()) {
-        userName = QString(getenv("USERNAME"));
-        if (userName.isEmpty())
-            userName = QString(getenv("USER"));
-    }
-    if (!userName.isEmpty())
-        tempFile += "-" + userName;
-#endif
-
-    // tempFile += ".mp4";
-
-    if (QFile::exists(tempFile) && !QFile::remove(tempFile)) {
-        qDebug() << "Cannot remove temp file" << tempFile;
+    if (tempfiles.size() > 1)
+    {
+        QTemporaryFile *removedFile = tempfiles.takeFirst();
+        delete removedFile;
     }
 
-    paths << tempFile;
-
-    if (paths.size() > 1) {
-        QString removedFile = paths.takeFirst();
-        if (QFile::exists(removedFile) && !QFile::remove(removedFile)) {
-            qDebug() << "Cannot remove temp file" << removedFile;
-        }
-    }
-
-    return tempFile;
-
+    tempfile->open();
+    return tempfile->fileName();
 }
 
 void Temporary::deleteAll() {
-    foreach(const QString &path, paths) {
-        if (QFile::exists(path) && !QFile::remove(path)) {
-            qDebug() << "Cannot remove temp file" << path;
-        }
+    foreach(QTemporaryFile *tempfile, tempfiles) {
+        delete tempfile;
     }
 }

diff --git a/src/temporary.h b/src/temporary.h
index de5e24d..b8fbba9 100644
--- a/src/temporary.h
+++ b/src/temporary.h
@@ -23,6 +23,7 @@ $END_LICENSE */
 
 #include <QtCore>
 #include <QDesktopServices>
+#include <QTemporaryFile>
 
 class Temporary {
 
