Update to 5.4.0

This commit is contained in:
DrKLO 2019-03-03 20:40:48 +00:00
parent f338a88eb4
commit e397bd9afd
200 changed files with 16433 additions and 7823 deletions

View file

@ -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();
}
}
}