mirror of
https://github.com/wrwrabbit/Partisan-Telegram-Android.git
synced 2026-04-30 21:19:33 +00:00
Update to 5.4.0
This commit is contained in:
parent
f338a88eb4
commit
e397bd9afd
200 changed files with 16433 additions and 7823 deletions
|
|
@ -0,0 +1,100 @@
|
|||
package org.telegram.messenger;
|
||||
|
||||
import org.telegram.tgnet.TLRPC;
|
||||
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
|
||||
public class AnimatedFileDrawableStream implements FileLoadOperationStream {
|
||||
|
||||
private FileLoadOperation loadOperation;
|
||||
private CountDownLatch countDownLatch;
|
||||
private TLRPC.Document document;
|
||||
private Object parentObject;
|
||||
private int currentAccount;
|
||||
private volatile boolean canceled;
|
||||
private final Object sync = new Object();
|
||||
private int lastOffset;
|
||||
|
||||
public AnimatedFileDrawableStream(TLRPC.Document d, Object p, int a) {
|
||||
document = d;
|
||||
parentObject = p;
|
||||
currentAccount = a;
|
||||
loadOperation = FileLoader.getInstance(currentAccount).loadStreamFile(this, document, parentObject, 0);
|
||||
}
|
||||
|
||||
public int read(int offset, int readLength) {
|
||||
synchronized (sync) {
|
||||
if (canceled) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
if (readLength == 0) {
|
||||
return 0;
|
||||
} else {
|
||||
int availableLength = 0;
|
||||
try {
|
||||
while (availableLength == 0) {
|
||||
availableLength = loadOperation.getDownloadedLengthFromOffset(offset, readLength);
|
||||
if (availableLength == 0) {
|
||||
if (loadOperation.isPaused() || lastOffset != offset) {
|
||||
FileLoader.getInstance(currentAccount).loadStreamFile(this, document, parentObject, offset);
|
||||
}
|
||||
synchronized (sync) {
|
||||
if (canceled) {
|
||||
return 0;
|
||||
}
|
||||
countDownLatch = new CountDownLatch(1);
|
||||
}
|
||||
FileLoader.getInstance(currentAccount).setLoadingVideo(document, false, true);
|
||||
countDownLatch.await();
|
||||
}
|
||||
}
|
||||
lastOffset = offset + availableLength;
|
||||
} catch (Exception e) {
|
||||
FileLog.e(e);
|
||||
}
|
||||
return availableLength;
|
||||
}
|
||||
}
|
||||
|
||||
public void cancel() {
|
||||
cancel(true);
|
||||
}
|
||||
|
||||
public void cancel(boolean removeLoading) {
|
||||
synchronized (sync) {
|
||||
if (countDownLatch != null) {
|
||||
countDownLatch.countDown();
|
||||
if (removeLoading && !canceled) {
|
||||
FileLoader.getInstance(currentAccount).removeLoadingVideo(document, false, true);
|
||||
}
|
||||
}
|
||||
canceled = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
synchronized (sync) {
|
||||
canceled = false;
|
||||
}
|
||||
}
|
||||
|
||||
public TLRPC.Document getDocument() {
|
||||
return document;
|
||||
}
|
||||
|
||||
public Object getParentObject() {
|
||||
return document;
|
||||
}
|
||||
|
||||
public int getCurrentAccount() {
|
||||
return currentAccount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void newDataAvailable() {
|
||||
if (countDownLatch != null) {
|
||||
countDownLatch.countDown();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue