From 88a74e3d139d71a592e6fba03258880771e22649 Mon Sep 17 00:00:00 2001 From: Kimon Tsinteris Date: Wed, 7 May 2014 18:11:16 -0700 Subject: [PATCH] support suppressing automatic display link activation --- pop.xcodeproj/project.pbxproj | 4 ---- pop/POPAnimator.mm | 3 ++- pop/POPAnimatorPrivate.h | 5 +++++ 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/pop.xcodeproj/project.pbxproj b/pop.xcodeproj/project.pbxproj index 0c6d1846..ce7c92f8 100644 --- a/pop.xcodeproj/project.pbxproj +++ b/pop.xcodeproj/project.pbxproj @@ -1186,7 +1186,6 @@ GCC_PREFIX_HEADER = "$(PRODUCT_NAME)/$(PRODUCT_NAME)-Prefix.pch"; INFOPLIST_FILE = "POP/pop-Info.plist"; PRODUCT_NAME = pop; - PUBLIC_HEADERS_FOLDER_PATH = ../Headers/POP; }; name = Debug; }; @@ -1201,7 +1200,6 @@ GCC_PREFIX_HEADER = "$(PRODUCT_NAME)/$(PRODUCT_NAME)-Prefix.pch"; INFOPLIST_FILE = "POP/pop-Info.plist"; PRODUCT_NAME = pop; - PUBLIC_HEADERS_FOLDER_PATH = ../Headers/POP; }; name = GCOV; }; @@ -1216,7 +1214,6 @@ GCC_PREFIX_HEADER = "$(PRODUCT_NAME)/$(PRODUCT_NAME)-Prefix.pch"; INFOPLIST_FILE = "POP/pop-Info.plist"; PRODUCT_NAME = pop; - PUBLIC_HEADERS_FOLDER_PATH = ../Headers/POP; }; name = Release; }; @@ -1231,7 +1228,6 @@ GCC_PREFIX_HEADER = "$(PRODUCT_NAME)/$(PRODUCT_NAME)-Prefix.pch"; INFOPLIST_FILE = "POP/pop-Info.plist"; PRODUCT_NAME = pop; - PUBLIC_HEADERS_FOLDER_PATH = ../Headers/POP; }; name = Profile; }; diff --git a/pop/POPAnimator.mm b/pop/POPAnimator.mm index 7b5da6c1..d4e580b9 100644 --- a/pop/POPAnimator.mm +++ b/pop/POPAnimator.mm @@ -88,6 +88,7 @@ @interface POPAnimator () CFTimeInterval _slowMotionLastTime; CFTimeInterval _slowMotionAccumulator; OSSpinLock _lock; + BOOL _disableDisplayLink; } @end @@ -110,7 +111,7 @@ static CVReturn displayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeSt // call while holding lock static void updateDisplayLink(POPAnimator *self) { - BOOL paused = 0 == self->_observers.count && self->_list.empty(); + BOOL paused = (0 == self->_observers.count && self->_list.empty()) || self->_disableDisplayLink; #if TARGET_OS_IPHONE if (paused != self->_displayLink.paused) { diff --git a/pop/POPAnimatorPrivate.h b/pop/POPAnimatorPrivate.h index f04fad68..be0a49af 100644 --- a/pop/POPAnimatorPrivate.h +++ b/pop/POPAnimatorPrivate.h @@ -31,6 +31,11 @@ + (void)setDisableBackgroundThread:(BOOL)flag; #endif +/** + Used for externally driven animator instances. + */ +@property (assign, nonatomic) BOOL disableDisplayLink; + /** Exposed for unit testing. */