camerauis/cameraxui/cxengine/src/cxefilesavethreaddesktop.cpp
branchRCL_3
changeset 54 bac7acad7cb3
parent 53 61bc0f252b2b
child 57 2c87b2808fd7
--- a/camerauis/cameraxui/cxengine/src/cxefilesavethreaddesktop.cpp	Tue Aug 31 15:03:46 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,144 +0,0 @@
-/*
-* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-
-#include "cxefilesavethreaddesktop.h"
-#include "cxeimagedataitem.h"  // item
-#include "cxutils.h" // debug
-
-/*!
-    \class CxeFileSaveThreadDesktop
-    \brief Still image saving thread    
-*/
-
-
-// ======== MEMBER FUNCTIONS ========
-
-CxeFileSaveThreadDesktop::CxeFileSaveThreadDesktop(QObject *parent)
-    : CxeFileSaveThread(parent), mExitThread(false), mExit(false)
-{
-    start(IdlePriority);
-}
-
-CxeFileSaveThreadDesktop::~CxeFileSaveThreadDesktop()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    mMutex.lock();
-    mExitThread = true;
-    mDataToSave.wakeOne();
-    mMutex.unlock();
-
-    wait(); // until the thread has finished execution.
-    qDeleteAll(mDataList);  // Ensure destruction
-    mDataList.clear();
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-void CxeFileSaveThreadDesktop::save(CxeImageDataItem *data)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    // Ensure safe data adding. 
-    // Saving thread will wait if needed, in read method, until mutex is unlocked
-    mMutex.lock();
-    mDataList.append(data);
-    // Wake up saving thread if it's sleeping
-    mDataToSave.wakeOne(); 
-    mMutex.unlock();
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-void CxeFileSaveThreadDesktop::handleVideoSaved(CxeError::Id status, const QString &filename)
-{
-    Q_UNUSED(status);
-    Q_UNUSED(filename);
-}
-
-void CxeFileSaveThreadDesktop::handleSnapshotReady(CxeError::Id status, const QImage &snapshot, const QString &filename)
-{
-    Q_UNUSED(status);
-    Q_UNUSED(snapshot);
-    Q_UNUSED(filename);
-}
-
-void CxeFileSaveThreadDesktop::handleSnapshotReady(CxeError::Id status, const QImage &snapshot, int id)
-{
-    Q_UNUSED(status);
-    Q_UNUSED(snapshot);
-    Q_UNUSED(id);
-}
-
-void CxeFileSaveThreadDesktop::read()
-{
-    mMutex.lock();
-    mCount = mDataList.count();
-    mExit = mExitThread;
-    mMutex.unlock();
-}
-
-void CxeFileSaveThreadDesktop::run()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    
-    CxeImageDataItem *item = NULL;
-    int i = 0;
-    // Check if there is data to save.
-    // There should not be any, because the thread is just contructed
-    read();
-
-    while (!mExit || i < mCount) { // Complete save before exit
-        CX_DEBUG(("CxeFileSaveThreadDesktop: index %d", i));
-        // Wait data
-        if (!mExit && i >= mCount) {
-            // If there isn't any data to save, put the thread sleeping
-            CX_DEBUG(("CxeFileSaveThreadDesktop: set thread sleeping"));
-            mMutex.lock();
-            //! @todo: read datalist count here before clearing, because there is some machine cycles after previous read 
-            // Clear the datalist, since all items are saved
-            mDataList.clear();
-            i = 0;
-            mDataToSave.wait(&mMutex); // waiting "wakeOne"
-            mMutex.unlock();
-            CX_DEBUG(("CxeFileSaveThreadDesktop: woken up"));
-        }
-
-        // There should be data now, because the thread is woken up
-        read();
-
-        if (i < mCount) { 
-            item = mDataList[i];
-        } else {
-            CX_DEBUG(("CxeFileSaveThreadDesktop: ERROR - woke up without data"));
-            continue;
-        }
-
-        // Check that item is not saved already
-        if (item && item->state() == CxeImageDataItem::SavePending) {
-            item->save();// Error ignored since it is emitted from CxeImageDataItemSymbian
-            // Delete item, since we own it
-            delete item; 
-            item = NULL;
-        }
-
-        // Saving takes some seconds, there might be new data available.
-        read();
-        ++i;
-    }
-  
-    CX_DEBUG_EXIT_FUNCTION();
-}