--- 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();
-}