home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-09-17 | 4.5 KB | 175 lines | [TEXT/MPS ] |
- //========================================================================================
- //
- // File: FWIdle.cpp
- // Release Version: $ ODF 2 $
- //
- // Copyright: (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
- //
- //========================================================================================
-
- #include "FWFrameW.hpp"
-
- #ifndef FWIDLE_H
- #include "FWIdle.h"
- #endif
-
- #ifndef FWPART_H
- #include "FWPart.h"
- #endif
-
- #ifndef FWFRAME_H
- #include "FWFrame.h"
- #endif
-
- #ifndef FWPRIDEB_H
- #include "FWPriDeb.h"
- #endif
-
- #ifndef FWSESION_H
- #include "FWSesion.h"
- #endif
-
- #ifndef FWSOMENV_H
- #include "FWSOMEnv.h"
- #endif
-
- #ifndef SOM_ODDispatcher_xh
- #include "Disptch.xh"
- #endif
-
- //========================================================================================
- // RunTime Info
- //========================================================================================
-
- #ifdef FW_BUILD_MAC
- #pragma segment fwpart2
- #endif
-
- FW_DEFINE_AUTO(FW_CIdler)
-
- //========================================================================================
- // class FW_CIdler
- //========================================================================================
-
- //----------------------------------------------------------------------------------------
- // FW_CIdler::FW_CIdler
- //----------------------------------------------------------------------------------------
-
- FW_CIdler::FW_CIdler(FW_CPart* part, ODIdleFrequency frequency) :
- fPart(part),
- fFrame(NULL),
- fRegistered(FALSE),
- fFrequency(frequency)
- {
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CIdler::FW_CIdler
- //----------------------------------------------------------------------------------------
-
- FW_CIdler::FW_CIdler(FW_CFrame* frame, ODIdleFrequency frequency) :
- fPart(frame->fPart),
- fFrame(frame),
- fRegistered(FALSE),
- fFrequency(frequency)
- {
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CIdler::~FW_CIdler
- //----------------------------------------------------------------------------------------
-
- FW_CIdler::~FW_CIdler()
- {
- if (fRegistered)
- {
- FW_SOMEnvironment ev;
- UnregisterIdle(ev);
- }
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CIdler::SetIdleFrequency
- //----------------------------------------------------------------------------------------
-
- void FW_CIdler::SetIdleFrequency(Environment *ev, ODIdleFrequency frequency)
- {
- fFrequency = frequency;
-
- if (fRegistered)
- FW_CSession::GetDispatcher(ev)->SetIdleFrequency(ev, fPart->GetODPart(ev), PrivGetRegisteredFrame(ev), fFrequency);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CIdler::PrivGetRegisteredFrame
- //----------------------------------------------------------------------------------------
-
- ODFrame* FW_CIdler::PrivGetRegisteredFrame(Environment *ev) const
- {
- return fFrame != NULL ? fFrame->GetODFrame(ev) : NULL;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CIdler::RegisterIdle
- //----------------------------------------------------------------------------------------
-
- void FW_CIdler::RegisterIdle(Environment *ev, FW_Boolean state)
- {
- if (state)
- RegisterIdle(ev);
- else
- UnregisterIdle(ev);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CIdler::RegisterIdle
- //----------------------------------------------------------------------------------------
-
- void FW_CIdler::RegisterIdle(Environment *ev)
- {
- if (!fRegistered)
- {
- if (fFrame)
- {
- if (fFrame->fIdler != NULL)
- fFrame->fIdler->UnregisterIdle(ev);
- }
- else
- {
- if (fPart->fIdler != NULL)
- fPart->fIdler->UnregisterIdle(ev);
- }
-
- FW_CSession::GetDispatcher(ev)->RegisterIdle(ev, fPart->GetODPart(ev), PrivGetRegisteredFrame(ev), fFrequency);
- fRegistered = TRUE;
- fPart->PrivCountIdleRegistering(TRUE);
-
- if (fFrame)
- fFrame->fIdler = this;
- else
- fPart->fIdler = this;
- }
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CIdler::UnregisterIdle
- //----------------------------------------------------------------------------------------
-
- void FW_CIdler::UnregisterIdle(Environment *ev)
- {
- if (fRegistered)
- {
- FW_ASSERT(fFrame ? fFrame->fIdler != NULL : fPart->fIdler != NULL);
-
- fRegistered = FALSE;
- fPart->PrivCountIdleRegistering(FALSE);
-
- if (fFrame)
- fFrame->fIdler = NULL;
- else
- fPart->fIdler = NULL;
-
- FW_CSession::GetDispatcher(ev)->UnregisterIdle(ev, fPart->GetODPart(ev), PrivGetRegisteredFrame(ev));
- }
- }
-