uiacceltk/hitchcock/goommonitor/inc/goomcloseapp.h
author hgs
Wed, 03 Nov 2010 19:29:22 +0200
changeset 64 9f8c0686fb49
permissions -rw-r--r--
201044
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
64
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  Classes for executing GOOM actions (e.g. closing applications and running plugins).
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#ifndef GOOMCLOSEAPP_H_
hgs
parents:
diff changeset
    20
#define GOOMCLOSEAPP_H_
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
#include <apgtask.h>
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
#include "goomaction.h"
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
class CGOomAppCloseTimer;
hgs
parents:
diff changeset
    28
class CGOomAppCloseWatcher;
hgs
parents:
diff changeset
    29
class TApaTask;
hgs
parents:
diff changeset
    30
class TActionRef;
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
/*
hgs
parents:
diff changeset
    33
 * The OOM action of closing an application in order to free up memory.
hgs
parents:
diff changeset
    34
 *
hgs
parents:
diff changeset
    35
 *  @lib oommonitor.lib
hgs
parents:
diff changeset
    36
 *  @since S60 v5.0
hgs
parents:
diff changeset
    37
 */
hgs
parents:
diff changeset
    38
NONSHARABLE_CLASS(CGOomCloseApp) : public CGOomAction
hgs
parents:
diff changeset
    39
    {
hgs
parents:
diff changeset
    40
public:
hgs
parents:
diff changeset
    41
    /**
hgs
parents:
diff changeset
    42
     * Two-phased constructor.
hgs
parents:
diff changeset
    43
     * @param aStateChangeObserver an observer to the state of the application
hgs
parents:
diff changeset
    44
     * @param aWs a connected handle to a window server session
hgs
parents:
diff changeset
    45
     */
hgs
parents:
diff changeset
    46
    static CGOomCloseApp* NewL(MGOomActionObserver& aStateChangeObserver, RWsSession& aWs);
hgs
parents:
diff changeset
    47
        
hgs
parents:
diff changeset
    48
    //from CGOomAction
hgs
parents:
diff changeset
    49
    
hgs
parents:
diff changeset
    50
    /**
hgs
parents:
diff changeset
    51
     * Close the application in order to free memory
hgs
parents:
diff changeset
    52
     * Call the CGOomAction::MemoryFreed when it is done
hgs
parents:
diff changeset
    53
     * @param aBytesRequested not used for clsoe app actions
hgs
parents:
diff changeset
    54
     */
hgs
parents:
diff changeset
    55
    virtual void FreeMemory(TInt aBytesRequested, TBool aUseSwRendering);
hgs
parents:
diff changeset
    56
    
hgs
parents:
diff changeset
    57
    ~CGOomCloseApp();
hgs
parents:
diff changeset
    58
    
hgs
parents:
diff changeset
    59
    /**
hgs
parents:
diff changeset
    60
     * Callback from CGOomAppCloseWatcher and CGOomAppCloseTimer
hgs
parents:
diff changeset
    61
     */
hgs
parents:
diff changeset
    62
    void CloseAppEvent();
hgs
parents:
diff changeset
    63
    
hgs
parents:
diff changeset
    64
    inline TBool IsRunning();
hgs
parents:
diff changeset
    65
hgs
parents:
diff changeset
    66
    /**
hgs
parents:
diff changeset
    67
     * Configure, or reconfigure the CGOomCloseApp object
hgs
parents:
diff changeset
    68
     * Action objects are reused to minimize any memory allocation when memory is low
hgs
parents:
diff changeset
    69
     */
hgs
parents:
diff changeset
    70
    void Reconfigure(const TActionRef& aRef);
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
    inline TUint WgId() const;
hgs
parents:
diff changeset
    73
    
hgs
parents:
diff changeset
    74
    
hgs
parents:
diff changeset
    75
    /** Ask nice */
hgs
parents:
diff changeset
    76
    void ConditionalClose();
hgs
parents:
diff changeset
    77
    
hgs
parents:
diff changeset
    78
    /** When the gentle push is not enough (i.e. force is required) **/
hgs
parents:
diff changeset
    79
    void KillTask();
hgs
parents:
diff changeset
    80
    
hgs
parents:
diff changeset
    81
    void KillTaskWaitDone();
hgs
parents:
diff changeset
    82
    
hgs
parents:
diff changeset
    83
private:
hgs
parents:
diff changeset
    84
    
hgs
parents:
diff changeset
    85
    CGOomCloseApp(MGOomActionObserver& aStateChangeObserver, RWsSession& aWs);
hgs
parents:
diff changeset
    86
    
hgs
parents:
diff changeset
    87
    void ConstructL();
hgs
parents:
diff changeset
    88
    
hgs
parents:
diff changeset
    89
    TUint iWgId;
hgs
parents:
diff changeset
    90
    TInt iCloseTimeout; 
hgs
parents:
diff changeset
    91
    TInt iWaitAfterClose; 
hgs
parents:
diff changeset
    92
        
hgs
parents:
diff changeset
    93
    TBool iAppCloserRunning;
hgs
parents:
diff changeset
    94
    TApaTask iCurrentTask;
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
    /**
hgs
parents:
diff changeset
    97
     * A timeout for an app close action
hgs
parents:
diff changeset
    98
     * Own
hgs
parents:
diff changeset
    99
     */
hgs
parents:
diff changeset
   100
    CGOomAppCloseTimer* iAppCloseTimer;
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
    /**
hgs
parents:
diff changeset
   103
     * A watcher for the application closing
hgs
parents:
diff changeset
   104
     * Own
hgs
parents:
diff changeset
   105
     */
hgs
parents:
diff changeset
   106
    CGOomAppCloseWatcher* iAppCloseWatcher; 
hgs
parents:
diff changeset
   107
    
hgs
parents:
diff changeset
   108
    TBool iAlreadyGaveUp;
hgs
parents:
diff changeset
   109
    };
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
#include "goomcloseapp.inl"
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
#endif /*GOOMCLOSEAPP_H_*/