00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef SkGlobals_DEFINED
00018 #define SkGlobals_DEFINED
00019
00020 #include "SkThread.h"
00021
00022 class SkGlobals {
00023 public:
00024 class Rec {
00025 public:
00026 virtual ~Rec();
00027 private:
00028 Rec* fNext;
00029 uint32_t fTag;
00030
00031 friend class SkGlobals;
00032 };
00033
00041 static Rec* Find(uint32_t tag, Rec* (*create_proc)());
00044 static Rec* Get(uint32_t tag)
00045 {
00046 Rec* rec = SkGlobals::Find(tag, NULL);
00047 SkASSERT(rec);
00048 return rec;
00049 }
00050
00051
00052 struct BootStrap {
00053 SkMutex fMutex;
00054 Rec* fHead;
00055 };
00056
00057 private:
00058 static void Init();
00059 static void Term();
00060 friend class SkGraphics;
00061
00062
00063 static BootStrap& GetBootStrap();
00064 };
00065
00066 #endif
00067