Commit Graph

13 Commits

Author SHA1 Message Date
Olivier Poitrey 92d7a01a52 Perform image decoding/optimization in the IO thread instead of main thread for better responsiveness (fix #18)
This new optimization is currently disabled by default so you can test it and give us feedback.
To enable it, add #define ENABLE_SDWEBIMAGE_DECODER and to not forget to add SDWebImageDecoder class
to your projet.

Thanks to Adam Jernst (https://github.com/adamjernst) and James Tang (https://github.com/mystcolor)
for this great optimization. See https://github.com/rs/SDWebImage/pull/18 for more info.
2011-10-04 13:07:26 +02:00
Olivier Poitrey 4005884df5 Fix coding style 2011-07-13 21:23:13 +02:00
Jeppe Vesterbæk 34e8082cde Add low priority download mode. Low priorities run NSUrlConnection in NSEventTrackingRunLoopMode 2011-05-06 10:30:50 +02:00
Olivier Poitrey 20b8cdf69d Remove wrong UIKit import and fix wrong indentation (space instead of tab) 2011-01-25 03:29:57 +01:00
niblh 9f492ccdf8 Add userInfo on SDWebImageDownloader.m 2010-10-07 12:15:16 +02:00
Olivier Poitrey 3f2f360ee2 Add support for system network activity indicator show/hide via notification
As showing/hiding the network activity indicator could conflict with your own code (i.e. the lib may hide the indicator when your code would still do some network stuff), the show/hide of the indicator isn't performed by the lib directly but SDWebImageDownloadStartNotification and SDWebImageDownloadStopNotification notifications are posted instead.

This lets you handle the indicator visiblity by yourself. If you're lazy, you can use the SDNetworkActivityIndicator library (http://github.com/rs/SDNetworkActivityIndicator) to handle it automatically. Once added to your project, all you have to do is to import this lib in addition to the SDWebImage lib.

Note that you should then use SDNetworkActivityIndicator for all your network status indicator visibility changes in your code if you don't want conflicts to happen.
2010-10-03 10:16:26 +02:00
Olivier Poitrey d2dc4cbbac Do not convert images to JPEG when stored to disk for caching
This saves CPU and memory in all cases and alpha channel / image clearness if orignal format was PNG or GIF.
2010-08-29 03:22:20 +02:00
Olivier Poitrey 7f7dfbecd6 Ensure the downloader is started from the main thread 2010-06-21 01:30:12 +02:00
Olivier Poitrey e0e369659e Replace the NSOperation based downloader by a simple async NSURLConnection (read-on to understand why)
I finally found the reason behind the download not started while UITableView is manipulated: the default NSURLConnection runloop mode. Its default mode is NSEventTrackingRunLoopMode which is interrupted by UI events. Changing default NSURLConnection runloop mode to NSRunLoopCommonModes just fix this good old responsiveness issue.

I thus decided to replace the current NSOperation based implementation by this finding, as NSOperation is far more expensive than simple async connections. Additionally, moving aways from NSOperation here fix an odd lagging issue with iOS 4, an issue I can't explain at the moment.

Note that `SDWebImageDownloader`'s `setMaxConcurrentDownloads:` method is now a no-op as I didn't implemented the NSOperation queuing system with async connections. I don't think it still necessary as thread-less async connectaions are very lightweight. If you think there is a real need of this, I may reconsider and implement it in the future. In the meantime, this method does nothing and its usage is declared as deprecated.
2010-06-09 04:36:18 +02:00
Olivier Poitrey 58a24963b5 Set references to nil after release in dealloc methods 2010-06-02 01:37:39 +02:00
Olivier Poitrey 439c01527f Ensure URL caching is disabled in order to prevent from duplicate caching 2010-03-17 17:43:12 +01:00
Olivier Poitrey 2fa0626aaa Remove the dirty hack of storing the helper into the first subview of the UIImageView and prevent duplicate downloads of the same URL
The helper (now called manager) is now handling the mapping between the UIImageView and its downloader.
This way we don't polute the UIImageView, and don't remove its capability to have subviews.
This change removes the automatic handling of image placeholder. The placeholder image can
be passed as second argument of setImageWithURL:placeholderImage:
The manager now handle duplicate downloads for the same URL gracefuly by sharing the same downloader
for all requestors.
Finaly, the manager handles URLs which can't create an image (HTTP error or invalid format) by flagging
them so it won't retry to download them again and again.
2009-09-24 02:35:14 +02:00
Olivier Poitrey a7734af511 Remove Dailymotion paternity and move to joined paternity with Fraggle behind the Simple Design (SD) team name 2009-09-21 19:36:47 +02:00