diff --git a/src/gui/main.cpp b/src/gui/main.cpp index f8839af..076e989 100644 --- a/src/gui/main.cpp +++ b/src/gui/main.cpp @@ -127,10 +127,17 @@ unsigned char pcm_bytes[MAX_FRAME_SIZE * CHANNELS * 2]; std::string window_title = "Remote Desk Client"; -std::string server_connection_status = "-"; -std::string client_connection_status = "-"; -std::string server_signal_status = "-"; -std::string client_signal_status = "-"; +std::string server_connection_status_str = "-"; +std::string client_connection_status_str = "-"; +std::string server_signal_status_str = "-"; +std::string client_signal_status_str = "-"; + +std::atomic server_connection_status = + ConnectionStatus::Closed; +std::atomic client_connection_status = + ConnectionStatus::Closed; +std::atomic server_signal_status = SignalStatus::SignalClosed; +std::atomic client_signal_status = SignalStatus::SignalClosed; // Refresh Event #define REFRESH_EVENT (SDL_USEREVENT + 1) @@ -317,12 +324,12 @@ void SdlCaptureAudioIn(void *userdata, Uint8 *stream, int len) { } if (1) { - if ("ClientConnected" == client_connection_status) { + if ("ClientConnected" == client_connection_status_str) { SendData(peer_client, DATA_TYPE::AUDIO, (const char *)dst_data[0], dst_bufsize); } - if ("ServerConnected" == server_connection_status) { + if ("ServerConnected" == server_connection_status_str) { SendData(peer_server, DATA_TYPE::AUDIO, (const char *)dst_data[0], dst_bufsize); } @@ -335,7 +342,7 @@ void SdlCaptureAudioIn(void *userdata, Uint8 *stream, int len) { } void SdlCaptureAudioOut(void *userdata, Uint8 *stream, int len) { - // if ("ClientConnected" != client_connection_status) { + // if ("ClientConnected" != client_connection_status_str) { // return; // } @@ -483,46 +490,49 @@ void ClientReceiveDataBuffer(const char *data, size_t size, const char *user_id, } void ServerSignalStatus(SignalStatus status) { + server_signal_status = status; if (SignalStatus::SignalConnecting == status) { - server_signal_status = "ServerSignalConnecting"; + server_signal_status_str = "ServerSignalConnecting"; } else if (SignalStatus::SignalConnected == status) { - server_signal_status = "ServerSignalConnected"; + server_signal_status_str = "ServerSignalConnected"; } else if (SignalStatus::SignalFailed == status) { - server_signal_status = "ServerSignalFailed"; + server_signal_status_str = "ServerSignalFailed"; } else if (SignalStatus::SignalClosed == status) { - server_signal_status = "ServerSignalClosed"; + server_signal_status_str = "ServerSignalClosed"; } else if (SignalStatus::SignalReconnecting == status) { - server_signal_status = "ServerSignalReconnecting"; + server_signal_status_str = "ServerSignalReconnecting"; } } void ClientSignalStatus(SignalStatus status) { + client_signal_status = status; if (SignalStatus::SignalConnecting == status) { - client_signal_status = "ClientSignalConnecting"; + client_signal_status_str = "ClientSignalConnecting"; } else if (SignalStatus::SignalConnected == status) { - client_signal_status = "ClientSignalConnected"; + client_signal_status_str = "ClientSignalConnected"; } else if (SignalStatus::SignalFailed == status) { - client_signal_status = "ClientSignalFailed"; + client_signal_status_str = "ClientSignalFailed"; } else if (SignalStatus::SignalClosed == status) { - client_signal_status = "ClientSignalClosed"; + client_signal_status_str = "ClientSignalClosed"; } else if (SignalStatus::SignalReconnecting == status) { - client_signal_status = "ClientSignalReconnecting"; + client_signal_status_str = "ClientSignalReconnecting"; } } void ServerConnectionStatus(ConnectionStatus status) { + server_connection_status = status; if (ConnectionStatus::Connecting == status) { - server_connection_status = "ServerConnecting"; + server_connection_status_str = "ServerConnecting"; } else if (ConnectionStatus::Connected == status) { - server_connection_status = "ServerConnected"; + server_connection_status_str = "ServerConnected"; } else if (ConnectionStatus::Disconnected == status) { - server_connection_status = "ServerDisconnected"; + server_connection_status_str = "ServerDisconnected"; } else if (ConnectionStatus::Failed == status) { - server_connection_status = "ServerFailed"; + server_connection_status_str = "ServerFailed"; } else if (ConnectionStatus::Closed == status) { - server_connection_status = "ServerClosed"; + server_connection_status_str = "ServerClosed"; } else if (ConnectionStatus::IncorrectPassword == status) { - server_connection_status = "Incorrect password"; + server_connection_status_str = "Incorrect password"; if (connect_button_pressed) { connect_button_pressed = false; joined = false; @@ -532,18 +542,19 @@ void ServerConnectionStatus(ConnectionStatus status) { } void ClientConnectionStatus(ConnectionStatus status) { + client_connection_status = status; if (ConnectionStatus::Connecting == status) { - client_connection_status = "ClientConnecting"; + client_connection_status_str = "ClientConnecting"; } else if (ConnectionStatus::Connected == status) { - client_connection_status = "ClientConnected"; + client_connection_status_str = "ClientConnected"; } else if (ConnectionStatus::Disconnected == status) { - client_connection_status = "ClientDisconnected"; + client_connection_status_str = "ClientDisconnected"; } else if (ConnectionStatus::Failed == status) { - client_connection_status = "ClientFailed"; + client_connection_status_str = "ClientFailed"; } else if (ConnectionStatus::Closed == status) { - client_connection_status = "ClientClosed"; + client_connection_status_str = "ClientClosed"; } else if (ConnectionStatus::IncorrectPassword == status) { - client_connection_status = "Incorrect password"; + client_connection_status_str = "Incorrect password"; if (connect_button_pressed) { connect_button_pressed = false; joined = false; @@ -776,7 +787,7 @@ int main() { LOG_INFO("peer_client init finish"); { - while ("ServerSignalConnected" != server_signal_status && !done) { + while (SignalStatus::SignalConnected != server_signal_status && !done) { } if (done) { @@ -1043,7 +1054,7 @@ int main() { if (ImGui::Button(connect_label)) { int ret = -1; - if ("ClientSignalConnected" == client_signal_status) { + if ("ClientSignalConnected" == client_signal_status_str) { if (strcmp(connect_label, "Connect") == 0 && !joined) { std::string user_id = "C-" + std::string(GetMac(mac_addr)); ret = JoinConnection(peer_client, remote_id, client_password); @@ -1142,9 +1153,10 @@ int main() { fps = frame_count / (elapsed_time / 1000); frame_count = 0; window_title = "Remote Desk Client FPS [" + std::to_string(fps) + - "] status [" + server_signal_status + "|" + - client_signal_status + "|" + server_connection_status + - "|" + client_connection_status + "]"; + "] status [" + server_signal_status_str + "|" + + client_signal_status_str + "|" + + server_connection_status_str + "|" + + client_connection_status_str + "]"; // For MacOS, UI frameworks can only be called from the main thread SDL_SetWindowTitle(window, window_title.c_str()); start_time = end_time; diff --git a/src/screen_capture/linux/screen_capture_x11.cpp b/src/screen_capture/linux/screen_capture_x11.cpp index 1cea009..1ff4ba9 100644 --- a/src/screen_capture/linux/screen_capture_x11.cpp +++ b/src/screen_capture/linux/screen_capture_x11.cpp @@ -21,6 +21,8 @@ int ScreenCaptureX11::Init(const RECORD_DESKTOP_RECT &rect, const int fps, _on_data = cb; } + av_log_set_level(AV_LOG_QUIET); + pFormatCtx_ = avformat_alloc_context(); avdevice_register_all(); diff --git a/src/screen_capture/macosx/screen_capture_avf.cpp b/src/screen_capture/macosx/screen_capture_avf.cpp index ecdbf7b..3f5be83 100644 --- a/src/screen_capture/macosx/screen_capture_avf.cpp +++ b/src/screen_capture/macosx/screen_capture_avf.cpp @@ -21,6 +21,8 @@ int ScreenCaptureAvf::Init(const RECORD_DESKTOP_RECT &rect, const int fps, _on_data = cb; } + av_log_set_level(AV_LOG_QUIET); + pFormatCtx_ = avformat_alloc_context(); avdevice_register_all(); diff --git a/thirdparty/projectx b/thirdparty/projectx index 13ea652..25c345f 160000 --- a/thirdparty/projectx +++ b/thirdparty/projectx @@ -1 +1 @@ -Subproject commit 13ea652278fae7238989c1118b1eaa7fac25b91b +Subproject commit 25c345f675b8a7fe9b751bd876c3840ab527fa23 diff --git a/thirdparty/xmake.lua b/thirdparty/xmake.lua index b798a04..69a54da 100644 --- a/thirdparty/xmake.lua +++ b/thirdparty/xmake.lua @@ -2,4 +2,6 @@ includes("sdl2", "projectx") if is_plat("windows") then elseif is_plat("linux") then includes("ffmpeg") +elseif is_plat("macosx") then + includes("ffmpeg") end \ No newline at end of file diff --git a/xmake.lua b/xmake.lua index 0d34a77..a26bf6a 100644 --- a/xmake.lua +++ b/xmake.lua @@ -32,9 +32,9 @@ elseif is_os("linux") then {force = true}) elseif is_os("macosx") then add_requires("ffmpeg 5.1.2", {system = false}) - add_requires("brew::libxcb") - add_packages("ffmpeg", "brew::libxcb") - add_links("SDL2", "SDL2main", "postproc") + add_requires("libxcb", {system = false}) + add_packages("ffmpeg", "libxcb") + add_links("SDL2", "SDL2main") add_ldflags("-Wl,-ld_classic") add_frameworks("OpenGL") end