Need to synchronize on the lock object before calling download() so that
we don't accidentally notify ourselves nigh-immediately (e.g., if things are already entirely up to date) before we've begun waiting on the lock object on the calling thread. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@1601 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: ResourceManager.java,v 1.14 2002/07/19 20:12:23 shaper Exp $
|
// $Id: ResourceManager.java,v 1.15 2002/07/22 23:19:23 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.resource;
|
package com.threerings.resource;
|
||||||
|
|
||||||
@@ -215,8 +215,8 @@ public class ResourceManager
|
|||||||
// create an object to wait on while the download takes place
|
// create an object to wait on while the download takes place
|
||||||
final Object lock = new Object();
|
final Object lock = new Object();
|
||||||
|
|
||||||
// pass the descriptors on to the download manager
|
// create the observer that will notify us when all is finished
|
||||||
dlmgr.download(dlist, true, new DownloadObserver() {
|
DownloadObserver obs = new DownloadObserver() {
|
||||||
public void resolvingDownloads () {
|
public void resolvingDownloads () {
|
||||||
// nothing for now
|
// nothing for now
|
||||||
}
|
}
|
||||||
@@ -239,17 +239,19 @@ public class ResourceManager
|
|||||||
lock.notify();
|
lock.notify();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
|
|
||||||
try {
|
synchronized (lock) {
|
||||||
synchronized (lock) {
|
// pass the descriptors on to the download manager
|
||||||
|
dlmgr.download(dlist, true, obs);
|
||||||
|
|
||||||
|
try {
|
||||||
// block until the download has completed
|
// block until the download has completed
|
||||||
lock.wait();
|
lock.wait();
|
||||||
|
} catch (InterruptedException ie) {
|
||||||
|
Log.warning("Thread interrupted while waiting for download " +
|
||||||
|
"to complete [ie=" + ie + "].");
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (InterruptedException ie) {
|
|
||||||
Log.warning("Thread interrupted while waiting for download " +
|
|
||||||
"to complete [ie=" + ie + "].");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user