#4694 Don't call reloadData on the main table on each updateUI call (and each sort) if the order hasn't changed; instead call setNeedsDisplay:. Don't call reloadData when toggling the main window per-torrent status string
Jordan Lee [Sat, 31 Dec 2011 21:28:53 +0000 (21:28 +0000)]
(trunk libT) #4690 "getPeerCandidates() uses more CPU than necessary" -- fixed.
Once we've scored all n candidates, we sort them by score so that we can pick out the k best candidates. If n is large, sorting them can be expensive. If we use the Selection Algorithm, we select in O(n) without having to sort.
Jordan Lee [Thu, 22 Dec 2011 19:35:13 +0000 (19:35 +0000)]
(trunk libT) #4684 "tr_cpSizeWhenDone() is slow for huge torrents that we're only partially downloading" -- fixed.
There are actually two different implementations of the byte-counting in that function: a slower implementation was added prior to 2.40 in r12918 to double-check the standard implementation. This checking was added to help smoke out a bug that was fixed in r12920, but I forgot to remove that slower implementation.
Jordan Lee [Wed, 14 Dec 2011 05:58:23 +0000 (05:58 +0000)]
(trunk libT) #4666 "webseed downloading never gets downloaded" -- fixed.
The webseed in question is downloading from an ubuntuone.com url. We ask for piece-sized ranges in a couple of different concurrent connections, and curl hints to the server that it's okay to gzip the response, or deflate it, or leave it raw. It looks like there's a bug in the server or in libcurl (or, somehow, Transmission) that's not compressing or decompressing these responses correctly -- we never get the right number of bytes in the response from libcurl. If we ask for the contents uncompressed, the download progresses towards completion.
As an aside, when testing this I noticed that deluge is a lot faster than Transmission on this torrent. In order for Transmission to reach parity here, webseed.c needs to know when it's appropriate to have more than 4 concurrent tasks and/or be able to request ranges > the torrent's piece size.
Jordan Lee [Wed, 14 Dec 2011 05:44:15 +0000 (05:44 +0000)]
(trunk libT) fix a minor memory leak in the bencode regression tests.
Found by llvm's static analyzer. This is a minor issue since the leak is in an automated test rather than in shipping code, but it's still better to fix it.
Jordan Lee [Wed, 14 Dec 2011 05:42:15 +0000 (05:42 +0000)]
(trunk libT) fix warnings in fileset_get_empty_slot() found by llvm's static-build analyzer.
static-build found a potential NULL pointer dereference. The circumstances where this could get triggered don't seem very likely, but doesn't hurt to fix the warning.
Jordan Lee [Wed, 14 Dec 2011 05:40:21 +0000 (05:40 +0000)]
(trunk web) fix warnings in tr_urlIsValidTracker() and tr_urlIsValid() found by llvm's scan-build.
scan-build found similar warnings in these two functions relating to allowing NULL pointers to be passed as arguments to functions that don't allow NULL. So now those NULL checks are made explicit before the function calls.
Jordan Lee [Sat, 10 Dec 2011 19:00:50 +0000 (19:00 +0000)]
(trunk libT) #4372 "make notification and system sounds configurable" -- instead of using notify-send, use GDBus on the org.freedesktop.Notifications API. Patch by fmuellner.
Jordan Lee [Sat, 10 Dec 2011 18:42:52 +0000 (18:42 +0000)]
(trunk libT) #4644 "Transmission can't download big files from webseed." -- fix overflow error with a patch based on one from and_cesbo. (Modified by Jordan to add random bugs.)
Jordan Lee [Mon, 14 Nov 2011 01:44:11 +0000 (01:44 +0000)]
(trunk web) followup to r13087 that makes the filterbar grouping a little nicer. Also use livings124's suggestion of always showing the up/down speeds even when they are zero
Jordan Lee [Fri, 11 Nov 2011 04:44:49 +0000 (04:44 +0000)]
(trunk web) #4168 "web client in r13075 not working in IE8" -- fixed, sort of.
IE8 can't handle the W3C method of stacking an image on a linear gradient. Since all supported browsers have other ways besides the W3C method of doing this, we can 'fix' this by removing the W3C method. At some point in the future when browsers all use the W3C method, we can look for a different solution, or drop IE8 support ;)
Jordan Lee [Thu, 27 Oct 2011 03:00:47 +0000 (03:00 +0000)]
(trunk web) continue merging the two stylesheets' contents.
The endgame for this merge is to extract the common parts into a shared css file. Judging from common.css' filename, that was probably the original intention when Clutch was first written.
Jordan Lee [Wed, 26 Oct 2011 23:28:39 +0000 (23:28 +0000)]
(trunk web) some (very) experimental changes to the color scheme. I'm not sure what the Right Thing is here, but I do know the previous approach was too grey.
Jordan Lee [Wed, 26 Oct 2011 23:19:38 +0000 (23:19 +0000)]
(trunk web) the preferences dialog is now activated from a toolbar button.
This is in preparation for merging about 80% of the scss code between the default and mobile versions of Clutch. Previously the mobile client had the prefs button in the footer and the default client had it in the popup menu. Now both have it in the toolbar instead.
Jordan Lee [Wed, 26 Oct 2011 15:50:31 +0000 (15:50 +0000)]
(trunk web) changes to clutch's file priority UI:
1. use form checkboxes for the 'file wanted' toggle
2. remove unused file_wanted_buttons.png
3. narrow the priority buttons a little
4. narrow the priority buttons' gradient range by about 2/3 so that the colors don't look harsh when there is row after row of priority buttons
Jordan Lee [Tue, 25 Oct 2011 23:36:47 +0000 (23:36 +0000)]
(trunk web) more changes to the look & feel of the buttons. This is a work in progress.
1. sync the toolbar buttons' appearance to match the footer & inspector buttons' new look from r13016
2. make the buttons a little easier to tap as per ticket #3862
3. try new toolbar icons from the 'wireframe mono icons' (CC attribution/noncommerical 3.0) by gentleface.com, found at iconfinder.com.