Skip to content

Commit 60e3484

Browse files
committed
v1.4.0(45)
fix network offline behavior. fix player selection order.
1 parent fbc5075 commit 60e3484

File tree

7 files changed

+69
-28
lines changed

7 files changed

+69
-28
lines changed

RemoteCloud/RemoteCloud/Storages/DropBoxStorage.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,16 +360,20 @@ public class DropBoxStorage: NetworkStorage, URLSessionTaskDelegate, URLSessionD
360360

361361
let task = URLSession.shared.dataTask(with: request) { data, response, error in
362362
self.callSemaphore.signal()
363+
var waittime = self.callWait
363364
if let error = error {
364365
print(error)
366+
if (error as NSError).code == -1009 {
367+
waittime += 30
368+
}
365369
}
366370
if let l = length {
367371
if data?.count ?? 0 != l {
368372
if callCount > 50 {
369373
onFinish?(data)
370374
return
371375
}
372-
DispatchQueue.global().asyncAfter(deadline: .now()+self.callWait+Double.random(in: 0..<0.5)) {
376+
DispatchQueue.global().asyncAfter(deadline: .now()+self.callWait+Double.random(in: 0..<waittime)) {
373377
self.readFile(fileId: fileId, start: start, length: length, callCount: callCount+1, onFinish: onFinish)
374378
}
375379
return

RemoteCloud/RemoteCloud/Storages/GoogleDriveStorage.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -728,8 +728,12 @@ public class GoogleDriveStorage: NetworkStorage, URLSessionTaskDelegate, URLSess
728728

729729
let task = URLSession.shared.dataTask(with: request) { data, response, error in
730730
self.callSemaphore.signal()
731+
var waittime = self.callWait
731732
if let error = error {
732733
print(error)
734+
if (error as NSError).code == -1009 {
735+
waittime += 30
736+
}
733737
}
734738
if let l = length {
735739
if data?.count ?? 0 != l {
@@ -738,7 +742,7 @@ public class GoogleDriveStorage: NetworkStorage, URLSessionTaskDelegate, URLSess
738742
onFinish?(data)
739743
return
740744
}
741-
DispatchQueue.global().asyncAfter(deadline: .now()+Double.random(in: 0..<self.callWait)) {
745+
DispatchQueue.global().asyncAfter(deadline: .now()+Double.random(in: 0..<waittime)) {
742746
self.readFile(fileId: fileId, start: start, length: length, callCount: callCount+1, onFinish: onFinish)
743747
}
744748
return

RemoteCloud/RemoteCloud/Storages/OneDriveStorage.swift

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,13 @@ public class OneDriveStorage: NetworkStorage, URLSessionTaskDelegate, URLSession
413413

414414
let task = URLSession.shared.dataTask(with: request) { data, response, error in
415415
self.callSemaphore.signal()
416+
var waittime = self.callWait
417+
if let error = error {
418+
print(error)
419+
if (error as NSError).code == -1009 {
420+
waittime += 30
421+
}
422+
}
416423
do {
417424
guard let data = data else {
418425
throw RetryError.Retry
@@ -437,7 +444,7 @@ public class OneDriveStorage: NetworkStorage, URLSessionTaskDelegate, URLSession
437444
}
438445
catch RetryError.Retry {
439446
if callCount < 20 {
440-
DispatchQueue.global().asyncAfter(deadline: .now()+self.callWait+Double.random(in: 0..<self.callWait)) {
447+
DispatchQueue.global().asyncAfter(deadline: .now()+self.callWait+Double.random(in: 0..<waittime)) {
441448
self.getLink(fileId: fileId, start: start, length: length, callCount: callCount+1, onFinish: onFinish)
442449
}
443450
return
@@ -475,13 +482,17 @@ public class OneDriveStorage: NetworkStorage, URLSessionTaskDelegate, URLSession
475482

476483
let task = URLSession.shared.dataTask(with: request) { data, response, error in
477484
self.callSemaphore.signal()
485+
var waittime = self.callWait
478486
if let error = error {
479487
print(error)
488+
if (error as NSError).code == -1009 {
489+
waittime += 30
490+
}
480491
}
481492
if let l = length {
482493
if data?.count ?? 0 != l {
483494
if callCount < 50 {
484-
DispatchQueue.global().asyncAfter(deadline: .now()+Double.random(in: 0..<self.callWait)) {
495+
DispatchQueue.global().asyncAfter(deadline: .now()+Double.random(in: 0..<waittime)) {
485496
self.getBody(downLink: downLink, start: start, length: length, callCount: callCount+1, onFinish: onFinish)
486497
}
487498
return

RemoteCloud/RemoteCloud/Storages/pCloudStorage.swift

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,13 @@ public class pCloudStorage: NetworkStorage, URLSessionTaskDelegate, URLSessionDa
402402

403403
let task = URLSession.shared.dataTask(with: request) { data, response, error in
404404
self.callSemaphore.signal()
405+
var waittime = self.callWait
406+
if let error = error {
407+
print(error)
408+
if (error as NSError).code == -1009 {
409+
waittime += 30
410+
}
411+
}
405412
do {
406413
guard let data = data else {
407414
throw RetryError.Retry
@@ -429,7 +436,7 @@ public class pCloudStorage: NetworkStorage, URLSessionTaskDelegate, URLSessionDa
429436
}
430437
catch RetryError.Retry {
431438
if callCount < 20 {
432-
DispatchQueue.global().asyncAfter(deadline: .now()+self.callWait+Double.random(in: 0..<self.callWait)) {
439+
DispatchQueue.global().asyncAfter(deadline: .now()+self.callWait+Double.random(in: 0..<waittime)) {
433440
self.getLink(fileId: fileId, start: start, length: length, callCount: callCount+1, onFinish: onFinish)
434441
}
435442
return
@@ -467,13 +474,17 @@ public class pCloudStorage: NetworkStorage, URLSessionTaskDelegate, URLSessionDa
467474

468475
let task = URLSession.shared.dataTask(with: request) { data, response, error in
469476
self.callSemaphore.signal()
477+
var waittime = self.callWait
470478
if let error = error {
471479
print(error)
480+
if (error as NSError).code == -1009 {
481+
waittime += 30
482+
}
472483
}
473484
if let l = length {
474485
if data?.count ?? 0 != l {
475486
if callCount < 50 {
476-
DispatchQueue.global().asyncAfter(deadline: .now()+Double.random(in: 0..<self.callWait)) {
487+
DispatchQueue.global().asyncAfter(deadline: .now()+Double.random(in: 0..<waittime)) {
477488
self.getBody(downLink: downLink, start: start, length: length, callCount: callCount+1, onFinish: onFinish)
478489
}
479490
return

RemoteCloud/RemoteCloud/SubItem/CueSheet.swift

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public class CueSheetRemoteItem: RemoteItem {
7373

7474
public class CueSheetStream: SlotStream {
7575
let remote: CueSheetRemoteItem
76-
var header: Data!
76+
var header: Data?
7777
var wavOffset: Int = -1
7878

7979
init(remote: CueSheetRemoteItem) {
@@ -100,10 +100,14 @@ public class CueSheetStream: SlotStream {
100100
}
101101
stream.isLive = false
102102
self.header = wavfile.getHeader(frames: frames)
103+
guard let header = self.header else {
104+
self.error = true
105+
return
106+
}
103107
let bytesPerSec = wavfile.wavFormat.BitsPerSample/8 * wavfile.wavFormat.SampleRate * wavfile.wavFormat.NumChannels
104108
let bytesPerFrame = bytesPerSec / 75
105109

106-
self.size = Int64(bytesPerFrame * Int(frames) + self.header.count)
110+
self.size = Int64(bytesPerFrame * Int(frames) + header.count)
107111

108112
self.wavOffset = wavfile.wavOffset + Int(self.remote.substart) * bytesPerFrame
109113
}
@@ -117,6 +121,11 @@ public class CueSheetStream: SlotStream {
117121
}
118122
if !dataAvailable(pos: pos1) && isLive {
119123
let len = (pos1 + bufSize < size) ? bufSize : size - pos1
124+
guard let header = self.header else {
125+
self.error = true
126+
onFinish()
127+
return
128+
}
120129
if pos1 == 0 {
121130

122131
remote.read(start: Int64(wavOffset), length: len-Int64(header.count)) { data in
@@ -125,7 +134,7 @@ public class CueSheetStream: SlotStream {
125134
}
126135
if let data = data {
127136
var result = Data()
128-
result += self.header
137+
result += header
129138
result += data
130139

131140
self.queue_buf.async {
@@ -184,7 +193,9 @@ class RemoteWaveFile {
184193
self.size = size
185194
group.enter()
186195
load()
187-
group.wait()
196+
guard group.wait(timeout: .now()+10) == .success else {
197+
return nil
198+
}
188199
guard wavFormat != nil, wavSize > 0, wavOffset > 0 else {
189200
return nil
190201
}

ccViewer/ccViewer.xcodeproj/project.pbxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -809,7 +809,7 @@
809809
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
810810
CODE_SIGN_ENTITLEMENTS = ccViewer/ccViewer.entitlements;
811811
CODE_SIGN_STYLE = Automatic;
812-
CURRENT_PROJECT_VERSION = 44;
812+
CURRENT_PROJECT_VERSION = 45;
813813
DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = YES;
814814
DEVELOPMENT_TEAM = 7A9X38B4YU;
815815
FRAMEWORK_SEARCH_PATHS = (
@@ -842,7 +842,7 @@
842842
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
843843
CODE_SIGN_ENTITLEMENTS = ccViewer/ccViewer.entitlements;
844844
CODE_SIGN_STYLE = Automatic;
845-
CURRENT_PROJECT_VERSION = 44;
845+
CURRENT_PROJECT_VERSION = 45;
846846
DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = YES;
847847
DEVELOPMENT_TEAM = 7A9X38B4YU;
848848
FRAMEWORK_SEARCH_PATHS = (

ccViewer/ccViewer/TableViewControllerItems.swift

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -976,22 +976,6 @@ class TableViewControllerItems: UITableViewController, UISearchResultsUpdating,
976976
semaphore.signal()
977977
self.displayRawViewer(item: item)
978978
}
979-
else if UserDefaults.standard.bool(forKey: "FFplayer") && UserDefaults.standard.bool(forKey: "firstFFplayer") &&
980-
!Converter.IsCasting() {
981-
semaphore.signal()
982-
playFFmpeg(item: item) { finish in
983-
if finish {
984-
return
985-
}
986-
DispatchQueue.main.async {
987-
self.activityIndicator.startAnimating()
988-
}
989-
DispatchQueue.main.asyncAfter(deadline: .now()+2) {
990-
self.activityIndicator.stopAnimating()
991-
self.autoDetectRun(item: item)
992-
}
993-
}
994-
}
995979
else {
996980
autoDetectRun(item: item)
997981
}
@@ -1015,6 +999,22 @@ class TableViewControllerItems: UITableViewController, UISearchResultsUpdating,
1015999
playConverter(item: item) { fin in
10161000
}
10171001
}
1002+
else if UserDefaults.standard.bool(forKey: "FFplayer") && UserDefaults.standard.bool(forKey: "firstFFplayer") &&
1003+
!Converter.IsCasting() {
1004+
semaphore.signal()
1005+
playFFmpeg(item: item) { finish in
1006+
if finish {
1007+
return
1008+
}
1009+
DispatchQueue.main.async {
1010+
self.activityIndicator.startAnimating()
1011+
}
1012+
DispatchQueue.main.asyncAfter(deadline: .now()+2) {
1013+
self.activityIndicator.stopAnimating()
1014+
self.autoDetectRun(item: item)
1015+
}
1016+
}
1017+
}
10181018
else if UserDefaults.standard.bool(forKey: "MediaViewer") && media_exts.contains(item.ext) {
10191019

10201020
displayMediaViewer(item: item, fallback: true)

0 commit comments

Comments
 (0)