<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleGetInfoString</key>
- <string>5.25</string>
+ <string>5.26</string>
<key>CFBundleIconFile</key>
<string>SaverRunner</string>
<key>CFBundleIdentifier</key>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleLongVersionString</key>
- <string>5.25</string>
+ <string>5.26</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>5.25</string>
+ <string>5.26</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
- <string>5.25</string>
+ <string>5.26</string>
<key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>NSHumanReadableCopyright</key>
- <string>5.25</string>
+ <string>5.26</string>
<key>NSMainNibFile</key>
<string>SaverRunner</string>
<key>NSPrincipalClass</key>
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
- SUUpdater *updater = [SUUpdater updaterForBundle:
- [NSBundle bundleForClass:[self class]]];
NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
[defs registerDefaults:UPDATER_DEFAULTS];
+ SUUpdater *updater = [SUUpdater updaterForBundle:
+ [NSBundle bundleForClass:[self class]]];
[updater setDelegate:self];
- // Launch the updater thread.
- [updater checkForUpdatesInBackground];
-
- // Now we need to wait for the Sparkle thread to finish before we can
- // exit, so just poll waiting for it.
- [NSTimer scheduledTimerWithTimeInterval:1
- target:self
- selector:@selector(exitWhenDone:)
- userInfo:updater
- repeats:YES];
+ [self awaitScreenSaverTermination:updater];
}
+
// Delegate method that lets us append extra info to the system-info URL.
//
- (NSArray *) feedParametersForUpdater:(SUUpdater *)updater
}
+// Whether ScreenSaverEngine is currently running, meaning screen is blanked.
+//
+- (BOOL) screenSaverActive
+{
+ BOOL found = NO;
+ NSString *target = @"/ScreenSaverEngine.app";
+ ProcessSerialNumber psn = { kNoProcess, kNoProcess };
+ while (GetNextProcess(&psn) == noErr) {
+ CFDictionaryRef cfdict =
+ ProcessInformationCopyDictionary (&psn,
+ kProcessDictionaryIncludeAllInformationMask);
+ if (cfdict) {
+ NSDictionary *dict = (NSDictionary *) cfdict;
+ NSString *path = [dict objectForKey:@"BundlePath"];
+ if (path && [path hasSuffix:target])
+ found = YES;
+ CFRelease (cfdict);
+ }
+ if (found)
+ break;
+ }
+ return found;
+}
+
+
+// If the screen saver is not running, then launch the updater.
+// Otherwise, wait a while and try again. This is because if the
+// updater tries to pop up a dialog box while the screen saver is
+// active, everything goes to hell and it never shows up.
+//
+- (void) awaitScreenSaverTermination:(SUUpdater *)updater
+{
+ if ([self screenSaverActive]) {
+ static float delay = 1;
+ [NSTimer scheduledTimerWithTimeInterval: delay
+ target:self
+ selector:@selector(awaitScreenSaverTerminationTimer:)
+ userInfo:updater
+ repeats:NO];
+ // slightly exponential back-off
+ delay *= 1.3;
+ if (delay > 120)
+ delay = 120;
+ } else {
+ // Launch the updater thread.
+ [updater checkForUpdatesInBackground];
+
+ // Now we need to wait for the Sparkle thread to finish before we can
+ // exit, so just poll waiting for it.
+ //
+ [NSTimer scheduledTimerWithTimeInterval:1
+ target:self
+ selector:@selector(exitWhenDone:)
+ userInfo:updater
+ repeats:YES];
+ }
+}
+
+
+- (void) awaitScreenSaverTerminationTimer:(NSTimer *)timer
+{
+ [self awaitScreenSaverTermination:[timer userInfo]];
+}
+
+
- (void) exitWhenDone:(NSTimer *)timer
{
SUUpdater *updater = [timer userInfo];
[[NSApplication sharedApplication] terminate:self];
}
+
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)app
{
return YES;
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleGetInfoString</key>
- <string>5.25</string>
+ <string>5.26</string>
<key>CFBundleIconFile</key>
<string>SaverRunner</string>
<key>CFBundleIdentifier</key>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleLongVersionString</key>
- <string>5.25</string>
+ <string>5.26</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
+ <key>CFBundleDisplayName</key>
+ <string>XScreenSaver</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>5.25</string>
+ <string>5.26</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
- <string>5.25</string>
+ <string>5.26</string>
<key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>LSUIElement</key>
<true/>
<key>NSHumanReadableCopyright</key>
- <string>5.25</string>
+ <string>5.26</string>
<key>NSMainNibFile</key>
<string>Updater</string>
<key>NSPrincipalClass</key>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
- <string>5.25</string>
+ <string>5.26</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
- <string>5.25</string>
+ <string>5.26</string>
<key>LSMinimumSystemVersion</key>
<string>10.4</string>
<key>NSMainNibFile</key>
NSWorkspaceLaunchAndHide)
configuration:nil
error:&err]) {
- NSLog(@"Unable to launch %@: %@", updater, err);
+ NSLog(@"Unable to launch %@: %@", app_path, err);
}
# endif // !USE_IPHONE
\b0 by Jamie Zawinski\
and many others\
\
-version 5.25\
+version 5.26\
09-Dec-2013\
\
{\field{\*\fldinst{HYPERLINK "http://www.jwz.org/xscreensaver/"}}{\fldrslt \cf2 \ul \ulc2 http://www.jwz.org/xscreensaver/}}\
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>NSHumanReadableCopyright</key>
- <string>5.25</string>
+ <string>5.26</string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleVersion</key>
- <string>5.25</string>
+ <string>5.26</string>
<key>NSMainNibFile</key>
<string>iSaverRunner</string>
<key>CFBundlePackageType</key>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>CFBundleShortVersionString</key>
- <string>5.25</string>
+ <string>5.26</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>UIRequiredDeviceCapabilities</key>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>CFBundleLongVersionString</key>
- <string>5.25</string>
+ <string>5.26</string>
<key>CFBundleIdentifier</key>
<string>${BUNDLE_IDENTIFIER}</string>
<key>CFBundleSignature</key>
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleGetInfoString</key>
- <string>5.25</string>
+ <string>5.26</string>
</dict>
</plist>
next unless $v;
$sigs{$v} = $sig if $sig;
$dates{$v} = $date if $date;
+ print STDERR "$progname: $v: " . ($date || '?') . "\n"
+ if ($verbose > 1);
}
}
# Re-generate the sig if the file date changed.
$sig = undef if ($odate && $odate ne $date);
+ print STDERR "$progname: $v1: $date " . ($sig ? "Y" : "N") . "\n"
+ if ($verbose > 1);
+
if (!$sig && $zip) {
local %ENV = %ENV;
$ENV{PATH} = "/usr/bin:$ENV{PATH}";
<link>http://www.jwz.org/xscreensaver/updates.xml</link>
<description>Updates to xscreensaver.</description>
<language>en</language>
+ <item>
+ <title>Version 5.25</title>
+ <link>http://www.jwz.org/xscreensaver/xscreensaver-5.25.dmg</link>
+ <description><![CDATA[• Try harder to bypass Quarrantine and Gatekeeper in OSX installer. <BR>• Some files were missing from the tarball.]]></description>
+ <pubDate>Mon, 09 Dec 2013 00:38:35 -0800</pubDate>
+ <enclosure url="http://www.jwz.org/xscreensaver/xscreensaver-5.25.dmg"
+ sparkle:version="5.25"
+ sparkle:dsaSignature="MC0CFQCr8H3E7MQ9UF8WoSfkNMYAeezkCgIUCEfh4LmhELZlR53pihwrbPn8/gw="
+ length="50492771"
+ type="application/octet-stream" />
+ </item>
<item>
<title>Version 5.24</title>
<link>http://www.jwz.org/xscreensaver/xscreensaver-5.24.dmg</link>
length="50258845"
type="application/octet-stream" />
</item>
- <item>
- <title>Version 5.23</title>
- <link>http://www.jwz.org/xscreensaver/xscreensaver-5.23.dmg</link>
- <description><![CDATA[• New hack, `geodesic'. <BR>• iOS and OSX: huge XCopyArea performance improvements. <BR>• More heuristics for using RSS feeds as image sources. <BR>• Improved Wikipedia parser. <BR>• Updated `webcollage' for recent Flickr changes. <BR>• Added Android to `bsod'. <BR>• OSX: Added a real installer. <BR>• iOS and OSX: fixed a font-metrics bug. <BR>• iOS: Fixed aspect ratio bug in non-rotating apps when launched in landscape mode. <BR>• Made `quasicrystal' work on weak graphics cards. <BR>• iOS: fixed `ifs'. <BR>• Better compression on icons, plists and XML files: smaller distribution and installation footprint. <BR>• Reverted that DEACTIVATE change. Bad idea. <BR>• `Phosphor' now supports amber as well as green.]]></description>
- <pubDate>Sat, 09 Nov 2013 13:29:07 -0800</pubDate>
- <enclosure url="http://www.jwz.org/xscreensaver/xscreensaver-5.23.dmg"
- sparkle:version="5.23"
- sparkle:dsaSignature="MC0CFQCn+J0qyxUxXj8qTqIzccyEjv90uQIURPhd0yT6PdDlQnXYGKhF30PvsLo="
- length="47275494"
- type="application/octet-stream" />
- </item>
<item>
<title>Version 5.14</title>
<link>http://www.jwz.org/xscreensaver/xscreensaver-5.14.dmg</link>
! a screen saver and locker for the X window system
! by Jamie Zawinski
!
-! version 5.25
+! version 5.26
! 09-Dec-2013
!
! See "man xscreensaver" for more info. The latest version is always
a screen saver and locker for the X window system
by Jamie Zawinski
- version 5.25
+ version 5.26
09-Dec-2013
http://www.jwz.org/xscreensaver/
-# Auto-generated: Mon Dec 9 00:26:15 PST 2013
+# Auto-generated: Mon Dec 9 03:01:47 PST 2013
driver/demo-Gtk-conf.c
driver/demo-Gtk-support.c
driver/demo-Gtk-widgets.c
static const char screensaver_id[] =
- "@(#)xscreensaver 5.25 (09-Dec-2013), by Jamie Zawinski (jwz@jwz.org)";
+ "@(#)xscreensaver 5.26 (09-Dec-2013), by Jamie Zawinski (jwz@jwz.org)";
%define name xscreensaver
-%define version 5.25
+%define version 5.26
Summary: X screen saver and locker
Name: %{name}