Skip to content

Commit 15fc54a

Browse files
Merge pull request #38 from andrewkaufman/cachePolicy
Protect engine plugs with the Gaffer 0.54 computeCachePolicy
2 parents 3bdfada + fd5b651 commit 15fc54a

File tree

4 files changed

+28
-0
lines changed

4 files changed

+28
-0
lines changed

include/AtomsGaffer/AtomsCrowdReader.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ class AtomsCrowdReader : public GafferScene::ObjectSource
8080

8181
protected:
8282

83+
Gaffer::ValuePlug::CachePolicy computeCachePolicy( const Gaffer::ValuePlug *output ) const override;
84+
8385
void hashSource( const Gaffer::Context *context, IECore::MurmurHash &h ) const override;
8486
IECore::ConstObjectPtr computeSource( const Gaffer::Context *context ) const override;
8587

include/AtomsGaffer/AtomsVariationReader.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ class AtomsVariationReader : public GafferScene::SceneNode
8585

8686
protected:
8787

88+
Gaffer::ValuePlug::CachePolicy computeCachePolicy( const Gaffer::ValuePlug *output ) const override;
89+
8890
void hashBound( const ScenePath &path, const Gaffer::Context *context, const GafferScene::ScenePlug *parent, IECore::MurmurHash &h ) const override;
8991
void hashTransform( const ScenePath &path, const Gaffer::Context *context, const GafferScene::ScenePlug *parent, IECore::MurmurHash &h ) const override;
9092
void hashAttributes( const ScenePath &path, const Gaffer::Context *context, const GafferScene::ScenePlug *parent, IECore::MurmurHash &h ) const override;

src/AtomsGaffer/AtomsCrowdReader.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,18 @@ void AtomsCrowdReader::affects( const Plug *input, AffectedPlugsContainer &outpu
447447
}
448448
}
449449

450+
Gaffer::ValuePlug::CachePolicy AtomsCrowdReader::computeCachePolicy( const Gaffer::ValuePlug *output ) const
451+
{
452+
if( output == enginePlug() )
453+
{
454+
// Request blocking compute for the engine, to avoid concurrent threads
455+
// loading the same engine redundantly.
456+
return ValuePlug::CachePolicy::Standard;
457+
}
458+
459+
return ObjectSource::computeCachePolicy( output );
460+
}
461+
450462
void AtomsCrowdReader::hashSource( const Gaffer::Context *context, MurmurHash &h ) const
451463
{
452464
atomsSimFilePlug()->hash( h );

src/AtomsGaffer/AtomsVariationReader.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1007,6 +1007,18 @@ void AtomsVariationReader::affects( const Plug *input, AffectedPlugsContainer &o
10071007
SceneNode::affects( input, outputs );
10081008
}
10091009

1010+
Gaffer::ValuePlug::CachePolicy AtomsVariationReader::computeCachePolicy( const Gaffer::ValuePlug *output ) const
1011+
{
1012+
if( output == enginePlug() )
1013+
{
1014+
// Request blocking compute for the engine, to avoid concurrent threads
1015+
// loading the same engine redundantly.
1016+
return ValuePlug::CachePolicy::Standard;
1017+
}
1018+
1019+
return SceneNode::computeCachePolicy( output );
1020+
}
1021+
10101022
void AtomsVariationReader::hashBound( const ScenePath &path, const Gaffer::Context *context, const ScenePlug *parent, IECore::MurmurHash &h ) const
10111023
{
10121024
SceneNode::hashBound( path, context, parent, h );

0 commit comments

Comments
 (0)