VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtMainThreadJobsManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvOsg/vrvOsg.h>
14 
16 
17 #include <osgUtil/IncrementalCompileOperation>
18 #include <osgUtil/SceneView>
19 #include <osg/OperationThread>
20 
21 #include <tbb/atomic.h>
22 
23 
24 namespace makVrv
25 {
28 
31 
33  template <>
34  inline const char* creatorTypeName<DtMainThreadJobsManager>(void) { return "DtMainThreadJobsManagerCreator"; }
35 
48 
56 
88 
89  class DT_DLL_VRVOSG DtMainThreadJobsManager : public osg::Operation
90  {
91  public:
93 
95  virtual ~DtMainThreadJobsManager();
96  public:
98  virtual void operator () (osg::Object* obj) override;
99 
101  virtual void startUp();
102 
104  virtual void release();
105 
107  virtual void setIco(osgUtil::IncrementalCompileOperation* ico);
108 
110  virtual void addPersistantJob(osg::Operation* job);
111 
113  virtual void removePersistantJob(osg::Operation* job);
114 
116  virtual void addTransientJob(osg::Operation* job);
117 
119  virtual void addRequiredTransientJob(osg::Operation* job);
120 
122  virtual int numberOfTransientJobs() const;
123 
125  virtual void finishFrameTime(double budget, osg::Object* obj);
126 
128  virtual double lastFrameTime() const;
129 
130  protected:
132  virtual void runTransientJobs(osgUtil::SceneView* sceneView);
133 
134  protected:
135  std::vector<osg::ref_ptr<osg::Operation> > myPersistantJobs;
136 
137  std::vector<osg::ref_ptr<osg::Operation> > myRequiredTransientJobs;
138  // transient jobs
139  tbb::atomic<int> myNumberOfTransientJobs;
140  std::vector<osg::ref_ptr<osg::Operation> > myTransientJobs;
141  std::vector<osg::ref_ptr<osg::Operation> > myNextFrameJobs;
142 
143  osgUtil::IncrementalCompileOperation* myIco;
145  OpenThreads::Condition myRunThreadWaitCond;
146  tbb::atomic<bool> myKeepGoing;
148 
150 
152 
153  private:
157  DtMainThreadJobsManager& operator=(const DtMainThreadJobsManager& rhs) = delete;
158  };
159 };
tbb::atomic< int > myNumberOfTransientJobs
Definition: DtMainThreadJobsManager.h:139
A light weight system for running jobs in the main thread during cull Transient Jobs run once and are...
Definition: DtMainThreadJobsManager.h:89
OpenThreads::Condition myRunThreadWaitCond
Definition: DtMainThreadJobsManager.h:145
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
double myLastFrameTime
Definition: DtMainThreadJobsManager.h:149
const char * creatorTypeName< DtMainThreadJobsManager >(void)
template specialization for the creator (pass the class being created to the creatorTypeName template...
Definition: DtMainThreadJobsManager.h:34
std::vector< osg::ref_ptr< osg::Operation > > myNextFrameJobs
Definition: DtMainThreadJobsManager.h:141
Variadic templated creator class for defining a DtVirtualBaseClass creator that is automatically regi...
Definition: DtVirtualBaseClassCreator.h:22
osg::ref_ptr< osg::Operation > myCurrentJob
Definition: DtMainThreadJobsManager.h:147
std::vector< osg::ref_ptr< osg::Operation > > myRequiredTransientJobs
Definition: DtMainThreadJobsManager.h:137
OpenThreads::Mutex myMutex
Definition: DtMainThreadJobsManager.h:144
OpenThreads::Mutex Mutex
Definition: DtOsgThreadingUtils.h:12
DtDe & myDe
Definition: DtMainThreadJobsManager.h:151
DtVirtualBaseClassCreator< DtMainThreadJobsManager > DtMainThreadJobsManagerCreator
creator
Definition: DtMainThreadJobsManager.h:27
std::vector< osg::ref_ptr< osg::Operation > > myTransientJobs
Definition: DtMainThreadJobsManager.h:140
std::vector< osg::ref_ptr< osg::Operation > > myPersistantJobs
Definition: DtMainThreadJobsManager.h:135
Contains DLL export macros.
osgUtil::IncrementalCompileOperation * myIco
Definition: DtMainThreadJobsManager.h:143
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:70
tbb::atomic< bool > myKeepGoing
Definition: DtMainThreadJobsManager.h:146

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)