Use same logic for skipping single instance check on Linux as on Mac/Win (#19446)
Release Notes: - Linux: Now skips check which exits with "zed is already running" when in development mode or when run with `zed-local`, matching the behavior on Mac and Windows Co-authored-by: Nathan Sobo <nathan@zed.dev>
This commit is contained in:
parent
5893e85708
commit
3fed738d2f
3 changed files with 21 additions and 36 deletions
|
@ -32,7 +32,7 @@ use node_runtime::{NodeBinaryOptions, NodeRuntime};
|
|||
use parking_lot::Mutex;
|
||||
use project::project_settings::ProjectSettings;
|
||||
use recent_projects::{open_ssh_project, SshSettings};
|
||||
use release_channel::{AppCommitSha, AppVersion};
|
||||
use release_channel::{AppCommitSha, AppVersion, ReleaseChannel};
|
||||
use session::{AppSession, Session};
|
||||
use settings::{
|
||||
handle_settings_file_changes, watch_config_file, InvalidSettingsError, Settings, SettingsStore,
|
||||
|
@ -164,32 +164,29 @@ fn main() {
|
|||
|
||||
let (open_listener, mut open_rx) = OpenListener::new();
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
{
|
||||
if env::var("ZED_STATELESS").is_err() {
|
||||
if crate::zed::listen_for_cli_connections(open_listener.clone()).is_err() {
|
||||
println!("zed is already running");
|
||||
return;
|
||||
let failed_single_instance_check =
|
||||
if *db::ZED_STATELESS || *release_channel::RELEASE_CHANNEL == ReleaseChannel::Dev {
|
||||
false
|
||||
} else {
|
||||
#[cfg(target_os = "linux")]
|
||||
{
|
||||
crate::zed::listen_for_cli_connections(open_listener.clone()).is_err()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(target_os = "windows")]
|
||||
{
|
||||
use zed::windows_only_instance::*;
|
||||
if !check_single_instance() {
|
||||
println!("zed is already running");
|
||||
return;
|
||||
}
|
||||
}
|
||||
#[cfg(target_os = "windows")]
|
||||
{
|
||||
!crate::zed::windows_only_instance::check_single_instance()
|
||||
}
|
||||
|
||||
#[cfg(target_os = "macos")]
|
||||
{
|
||||
use zed::mac_only_instance::*;
|
||||
if ensure_only_instance() != IsOnlyInstance::Yes {
|
||||
println!("zed is already running");
|
||||
return;
|
||||
}
|
||||
#[cfg(target_os = "macos")]
|
||||
{
|
||||
use zed::mac_only_instance::*;
|
||||
ensure_only_instance() != IsOnlyInstance::Yes
|
||||
}
|
||||
};
|
||||
if failed_single_instance_check {
|
||||
println!("zed is already running");
|
||||
return;
|
||||
}
|
||||
|
||||
let git_hosting_provider_registry = Arc::new(GitHostingProviderRegistry::new());
|
||||
|
|
|
@ -87,10 +87,6 @@ pub enum IsOnlyInstance {
|
|||
}
|
||||
|
||||
pub fn ensure_only_instance() -> IsOnlyInstance {
|
||||
if *db::ZED_STATELESS || *release_channel::RELEASE_CHANNEL == ReleaseChannel::Dev {
|
||||
return IsOnlyInstance::Yes;
|
||||
}
|
||||
|
||||
if check_got_handshake() {
|
||||
return IsOnlyInstance::No;
|
||||
}
|
||||
|
|
|
@ -17,14 +17,6 @@ fn retrieve_app_instance_event_identifier() -> &'static str {
|
|||
}
|
||||
|
||||
pub fn check_single_instance() -> bool {
|
||||
if *db::ZED_STATELESS || *release_channel::RELEASE_CHANNEL == ReleaseChannel::Dev {
|
||||
return true;
|
||||
}
|
||||
|
||||
check_single_instance_event()
|
||||
}
|
||||
|
||||
fn check_single_instance_event() -> bool {
|
||||
unsafe {
|
||||
CreateEventW(
|
||||
None,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue