Merge pull request #3156 from Kingtous/master

fix: --cm cannot exit on macOS
This commit is contained in:
RustDesk 2023-02-10 21:26:27 +08:00 committed by GitHub
commit 70c9ef6494
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 7 deletions

View File

@ -49,6 +49,11 @@ int androidVersion = 0;
int windowsBuildNumber = 0; int windowsBuildNumber = 0;
DesktopType? desktopType; DesktopType? desktopType;
/// Check if the app is running with single view mode.
bool isSingleViewApp() {
return desktopType == DesktopType.cm;
}
/// * debug or test only, DO NOT enable in release build /// * debug or test only, DO NOT enable in release build
bool isTest = false; bool isTest = false;

View File

@ -1,11 +1,13 @@
// original cm window in Sciter version. // original cm window in Sciter version.
import 'dart:async'; import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hbb/consts.dart'; import 'package:flutter_hbb/consts.dart';
import 'package:flutter_hbb/desktop/widgets/tabbar_widget.dart'; import 'package:flutter_hbb/desktop/widgets/tabbar_widget.dart';
import 'package:flutter_hbb/models/chat_model.dart'; import 'package:flutter_hbb/models/chat_model.dart';
import 'package:flutter_hbb/utils/platform_channel.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:window_manager/window_manager.dart'; import 'package:window_manager/window_manager.dart';
@ -47,8 +49,17 @@ class _DesktopServerPageState extends State<DesktopServerPage>
@override @override
void onWindowClose() { void onWindowClose() {
gFFI.serverModel.closeAll(); Future.wait([
gFFI.close(); gFFI.serverModel.closeAll(),
gFFI.close()
]).then((_) {
if (Platform.isMacOS) {
RdPlatformChannel.instance.terminate();
} else {
windowManager.setPreventClose(false);
windowManager.close();
}
});
super.onWindowClose(); super.onWindowClose();
} }

View File

@ -1399,12 +1399,12 @@ class FFI {
await setCanvasConfig(id, cursorModel.x, cursorModel.y, canvasModel.x, await setCanvasConfig(id, cursorModel.x, cursorModel.y, canvasModel.x,
canvasModel.y, canvasModel.scale, ffiModel.pi.currentDisplay); canvasModel.y, canvasModel.scale, ffiModel.pi.currentDisplay);
} }
bind.sessionClose(id: id);
imageModel.update(null); imageModel.update(null);
cursorModel.clear(); cursorModel.clear();
ffiModel.clear(); ffiModel.clear();
canvasModel.clear(); canvasModel.clear();
inputModel.resetModifiers(); inputModel.resetModifiers();
await bind.sessionClose(id: id);
debugPrint('model $id closed'); debugPrint('model $id closed');
id = ''; id = '';
} }

View File

@ -560,10 +560,8 @@ class ServerModel with ChangeNotifier {
} }
} }
closeAll() { Future<void> closeAll() async {
for (var client in _clients) { await Future.wait(_clients.map((client) => bind.cmCloseConnection(connId: client.id)));
bind.cmCloseConnection(connId: client.id);
}
_clients.clear(); _clients.clear();
tabController.state.value.tabs.clear(); tabController.state.value.tabs.clear();
} }