summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJay Freeman (saurik) <saurik@saurik.com>2009-06-22 11:35:37 +0000
committerJay Freeman (saurik) <saurik@saurik.com>2010-09-30 07:13:57 +0000
commitea173384eb3f0b9652fba63f188a0599f8842c7b (patch)
treed11b62876c1e69e947ae95438bca7bd7fda04707
parent185f1f6fb02a64bbadb68cfe47c23a063a644f9b (diff)
Drastic performance and stability increases.
-rw-r--r--Cydia.app/Sources/cydia.ifoneguide.nl.pngbin3464 -> 0 bytes
-rw-r--r--Cydia.mm19
-rwxr-xr-xLibrary/firmware.sh33
-rw-r--r--UICaboodle/BrowserView.h2
-rw-r--r--UICaboodle/BrowserView.mm48
-rw-r--r--control2
6 files changed, 92 insertions, 12 deletions
diff --git a/Cydia.app/Sources/cydia.ifoneguide.nl.png b/Cydia.app/Sources/cydia.ifoneguide.nl.png
deleted file mode 100644
index 7027801..0000000
--- a/Cydia.app/Sources/cydia.ifoneguide.nl.png
+++ /dev/null
Binary files differ
diff --git a/Cydia.mm b/Cydia.mm
index bac2975..71b9dcd 100644
--- a/Cydia.mm
+++ b/Cydia.mm
@@ -417,6 +417,7 @@ static const CFStringCompareFlags LaxCompareFlags_ = kCFCompareCaseInsensitive |
#define ShowInternals (0 && !ForRelease)
#define IgnoreInstall (0 && !ForRelease)
#define RecycleWebViews 0
+#define RecyclePackageViews 0
#define AlwaysReload (1 && !ForRelease)
#if !TraceLogging
@@ -2457,9 +2458,12 @@ struct PackageNameOrdering :
- (Address *) author {
if (author$_ == nil) {
+_trace();
if (author_.empty())
return nil;
+_trace();
author$_ = [[Address addressWithString:author_] retain];
+_trace();
} return author$_;
}
@@ -7489,7 +7493,9 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
ManageView *manage_;
SearchView *search_;
+#if RecyclePackageViews
NSMutableArray *details_;
+#endif
}
@end
@@ -7871,8 +7877,10 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
- (void) setPackageView:(PackageView *)view {
WebThreadLock();
[view setPackage:nil];
+#if RecyclePackageViews
if ([details_ count] < 3)
[details_ addObject:view];
+#endif
WebThreadUnlock();
}
@@ -7881,6 +7889,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
}
- (PackageView *) packageView {
+#if RecyclePackageViews
PackageView *view;
size_t count([details_ count]);
@@ -7896,6 +7905,9 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
}
return view;
+#else
+ return [self _packageView];
+#endif
}
- (void) finish {
@@ -8030,9 +8042,11 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
withClass:[ManageView class]
] retain];
+#if RecyclePackageViews
details_ = [[NSMutableArray alloc] initWithCapacity:4];
[details_ addObject:[self _packageView]];
[details_ addObject:[self _packageView]];
+#endif
PrintTimes();
@@ -8278,6 +8292,8 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
}
- (void) applicationDidFinishLaunching:(id)unused {
+ [BrowserView _initialize];
+
_trace();
Font12_ = [[UIFont systemFontOfSize:12] retain];
Font12Bold_ = [[UIFont boldSystemFontOfSize:12] retain];
@@ -8587,7 +8603,8 @@ int main(int argc, char *argv[]) { _pooled
/*if (substrate && access("/Library/MobileSubstrate/MobileSubstrate.dylib", F_OK) == 0)
dlopen("/Library/MobileSubstrate/MobileSubstrate.dylib", RTLD_LAZY | RTLD_GLOBAL);*/
- if (access("/User", F_OK) != 0) {
+ if (access("/User", F_OK) != 0 || access("/tmp/.cydia.fw", F_OK) != 0) {
+ unlink("/tmp/.cydia.fw");
_trace();
system("/usr/libexec/cydia/firmware.sh");
_trace();
diff --git a/Library/firmware.sh b/Library/firmware.sh
index 0ad6175..e91eef3 100755
--- a/Library/firmware.sh
+++ b/Library/firmware.sh
@@ -3,19 +3,40 @@ set -e
version=$(sw_vers -productVersion)
-cat /var/lib/dpkg/status | while IFS= read -r line; do
+cat /var/lib/dpkg/status | {
+
+while IFS= read -r line; do
+ #echo "#${firmware+@}/${blank+@} ${line}" 1>&2
+
+ if [[ ${line} == '' && "${blank+@}" ]]; then
+ continue
+ else
+ unset blank
+ fi
+
if [[ ${line} == 'Package: firmware' ]]; then
firmware=
elif [[ ${line} == '' ]]; then
- unset firmware
- elif [[ "${firmware+@}" ]]; then
+ blank=
+ fi
+
+ if [[ "${firmware+@}" ]]; then
+ if [[ "${blank+@}" ]]; then
+ unset firmware
+ fi
continue
fi
+ #echo "${firmware+@}/${blank+@} ${line}" 1>&2
echo "${line}"
-done >/var/lib/dpkg/status_
+done
-cat >>/var/lib/dpkg/status_ <<EOF
+#echo "#${firmware+@}/${blank+@} EOF" 1>&2
+if ! [[ "${blank+@}" || "${firmware+@}" ]]; then
+ echo
+fi
+
+cat <<EOF
Package: firmware
Essential: yes
Status: install ok installed
@@ -30,6 +51,8 @@ Name: iPhone Firmware
EOF
+} >/var/lib/dpkg/status_
+
mv -f /var/lib/dpkg/status{_,}
echo "/." >/var/lib/dpkg/info/firmware.list
diff --git a/UICaboodle/BrowserView.h b/UICaboodle/BrowserView.h
index f1a9dbc..bd956b8 100644
--- a/UICaboodle/BrowserView.h
+++ b/UICaboodle/BrowserView.h
@@ -80,6 +80,8 @@
Class class_;
}
++ (void) _initialize;
+
- (void) alertSheet:(UIActionSheet *)sheet buttonClicked:(int)button;
- (void) loadURL:(NSURL *)url cachePolicy:(NSURLRequestCachePolicy)policy;
diff --git a/UICaboodle/BrowserView.mm b/UICaboodle/BrowserView.mm
index b99c2d2..e08c291 100644
--- a/UICaboodle/BrowserView.mm
+++ b/UICaboodle/BrowserView.mm
@@ -6,6 +6,7 @@
extern NSString * const kCAFilterNearest;
#include <WebCore/WebCoreThread.h>
+#include <WebKit/WebPreferences-WebPrivate.h>
#include "substrate.h"
@@ -209,12 +210,28 @@ UIActionSheet *mailAlertSheet = [[UIActionSheet alloc] initWithTitle:UCLocalize(
/* }}} */
#endif
+#define ShowInternals 0
+#define LogBrowser 0
+
+#define lprintf(args...) fprintf(stderr, args)
+
@implementation BrowserView
#if ShowInternals
-#include "Internals.h"
+#include "UICaboodle/UCInternal.h"
#endif
++ (void) _initialize {
+ NSLog(@"INITIALIZING");
+ [WebView enableWebThread];
+
+ WebPreferences *preferences([WebPreferences standardPreferences]);
+ [preferences setCacheModel:WebCacheModelDocumentBrowser];
+ [preferences setOfflineWebApplicationCacheEnabled:YES];
+
+ [WebPreferences _setInitialDefaultTextEncodingToSystemEncoding];
+}
+
- (void) dealloc {
#if LogBrowser
NSLog(@"[BrowserView dealloc]");
@@ -232,9 +249,8 @@ UIActionSheet *mailAlertSheet = [[UIActionSheet alloc] initWithTitle:UCLocalize(
[webview setScriptDebugDelegate:nil];
[webview setPolicyDelegate:nil];
- [webview setDownloadDelegate:nil];
-
/* XXX: these are set by UIWebDocumentView
+ [webview setDownloadDelegate:nil];
[webview _setFormDelegate:nil];
[webview _setUIKitDelegate:nil];
[webview setEditingDelegate:nil];*/
@@ -425,6 +441,13 @@ UIActionSheet *mailAlertSheet = [[UIActionSheet alloc] initWithTitle:UCLocalize(
return false;
}
+- (void) formAssistant:(id)sender didBeginEditingFormNode:(id)node {
+}
+
+- (void) formAssistant:(id)sender didEndEditingFormNode:(id)node {
+ [self fixScroller];
+}
+
- (void) webViewShow:(WebView *)sender {
/* XXX: this is where I cry myself to sleep */
}
@@ -1214,17 +1237,25 @@ UIActionSheet *mailAlertSheet = [[UIActionSheet alloc] initWithTitle:UCLocalize(
[webview_ setTileSize:CGSizeMake(webrect.size.width, 500)];
+ if ([webview_ respondsToSelector:@selector(enableReachability)])
+ [webview_ enableReachability];
+
[webview_ setAllowsMessaging:YES];
+ if ([webview_ respondsToSelector:@selector(useSelectionAssistantWithMode:)])
+ [webview_ useSelectionAssistantWithMode:0];
+
[webview_ setTilingEnabled:YES];
[webview_ setDrawsGrid:NO];
[webview_ setLogsTilingChanges:NO];
[webview_ setTileMinificationFilter:kCAFilterNearest];
+
if ([webview_ respondsToSelector:@selector(setDataDetectorTypes:)])
/* XXX: abstractify */
[webview_ setDataDetectorTypes:0x80000000];
else
[webview_ setDetectsPhoneNumbers:NO];
+
[webview_ setAutoresizes:YES];
[webview_ setMinimumScale:0.25f forDocumentTypes:0x10];
@@ -1252,8 +1283,13 @@ UIActionSheet *mailAlertSheet = [[UIActionSheet alloc] initWithTitle:UCLocalize(
[webview _setUsesLoaderCache:YES];
[webview setGroupName:@"CydiaGroup"];
+
+ WebPreferences *preferences([webview preferences]);
+
if ([webview respondsToSelector:@selector(_setLayoutInterval:)])
[webview _setLayoutInterval:0];
+ else
+ [preferences _setLayoutInterval:0];
}
[self setViewportWidth:width];
@@ -1270,10 +1306,12 @@ UIActionSheet *mailAlertSheet = [[UIActionSheet alloc] initWithTitle:UCLocalize(
indirect_ = [[IndirectDelegate alloc] initWithDelegate:self];
[webview setFrameLoadDelegate:indirect_];
+ [webview setPolicyDelegate:indirect_];
[webview setResourceLoadDelegate:indirect_];
[webview setUIDelegate:indirect_];
- [webview setScriptDebugDelegate:indirect_];
- [webview setPolicyDelegate:indirect_];
+
+ /* XXX: do not turn this on under penalty of extreme pain */
+ [webview setScriptDebugDelegate:nil];
WebThreadUnlock();
diff --git a/control b/control
index c59c897..fb262dc 100644
--- a/control
+++ b/control
@@ -3,7 +3,7 @@ Priority: required
Section: Packaging
Maintainer: Jay Freeman (saurik) <saurik@saurik.com>
Architecture: iphoneos-arm
-Version: 1.0.2936-1
+Version: 1.0.2942-1
Replaces: com.sosiphone.addcydia
Depends: apr-lib, apt7-lib, apt7-key, darwintools, pcre, shell-cmds, system-cmds
Pre-Depends: dpkg (>= 1.14.25-8)