#ifndef _c_V_B_Ltask_h #define _c_V_B_Ltask_h // =========================================================================== // cVBLtask.cpp Version 1.2 ©1998 Joakim Braun All rights reserved. // =========================================================================== // // CONTENTS: A base class for vertical retrace tasks (VBL tasks). Handles installing // and removing of tasks. Subclass to add functionality. // HOW TO USE: Derive a class from cVBLtask. Override GotVBLResources() and DoVBLTask(). // Instantiate the object. VBL task lasts until object goes out of scope. // cVBLtask is free for any and all use. // Do not distribute modified source code under my name. // No support promised, no liability accepted. Provided "as is". // That said, I can be reached at braun@swipnet.se. // Change history: // 1.1 March 30, 1997 First release // 1.2 August 30, 1998 Cleaned up code (gah!!) for re-release #include //************************ // Dummy definition to get around recursion class cVBLtask; typedef struct { VBLTask theTask; long A5; cVBLtask* vblObject; } VBLTaskWithA5AndObjectPtr, *smartVBLtaskPtr; class cVBLtask{ public: cVBLtask(Int16 newVBLinterval); virtual ~cVBLtask(void); protected: void InstallVBLtask(void); void RemoveVBLtask(void); virtual void InitBeforeVBLinstall(void); virtual void CleanupAfterVBLremove(void); virtual Boolean GotVBLresources(void); virtual void DoVBLtask(void); private: smartVBLtaskPtr mTaskRecord; Int16 mVblInterval; Boolean mTaskIsRunning; #if GENERATINGCFM static pascal void VBLtask(VBLTaskPtr inVBLTaskPtr); #else static pascal void VBLtask(VBLTaskPtr inVBLTaskPtr : __A0); #endif }; #endif