Page 4 of 6

Re: mute the game while alt-tabbed

Posted: Fri Feb 26, 2021 5:00 pm
by MarvinCZ
ptx0 wrote: Fri Feb 26, 2021 4:51 pm because you can solve the problem without Wube having to spend time on it.
It's called "User experience". 🙂

Lots of things could have been actually left out from the game, but in fact are there just because Factorio developers care for user's experience and quality of life.
This proposal is just another example of the same principle.

Let's leave the decision if such feature deserves to be spent time on for Wube, after all it's their time, their decision and their game.

Re: mute the game while alt-tabbed

Posted: Fri Feb 26, 2021 5:04 pm
by ptx0
it's been 8 years since this thread was opened. if you want to keep waiting, be my guest.

if you want to fix it yourself, use AppleScript:

Code: Select all

tell application "Factorio"
  set currentVolume to sound volume
end tell

Re: mute the game while alt-tabbed

Posted: Fri Feb 26, 2021 5:07 pm
by ptx0
nuhll wrote: Wed May 27, 2020 12:42 am Is it hard to implement it?!
actually yes. it's very buggy even in games that do support it. it's not a native Windows or OS X function and the devs have to resort to hacks for it to work, like using software resampling before it's sent to the OS audio backend.. increases CPU use for a dumb reason. Allegro audio is already high in CPU use.

that's why I said it's an OS level function that Wube has no business trying to implement.... and there's several offered tools in this thread that will do it for you using aforementioned hacks that Wube won't have to touch with a 40 foot pole.

Re: mute the game while alt-tabbed

Posted: Fri Feb 26, 2021 5:09 pm
by MarvinCZ
ptx0 wrote: Fri Feb 26, 2021 5:04 pm it's been 8 years since this thread was opened. if you want to keep waiting, be my guest.
Call me an incurable optimist.. ;-)

Re: mute the game while alt-tabbed

Posted: Sat Feb 27, 2021 5:33 pm
by Rseding91
Not an answer to the suggestion but some developer info:

Detecting when a window is in focus or not is (apparently) a non-solved problem. Some operating systems with some drivers and some situations may have a program in focus but from a code perspective it never gets the "focus gained" and so the code thinks "not focused" and all kinds of issues happen.

Re: mute the game while alt-tabbed

Posted: Sat Feb 27, 2021 6:00 pm
by MarvinCZ
Rseding91 wrote: Sat Feb 27, 2021 5:33 pm Detecting when a window is in focus or not is (apparently) a non-solved problem. Some operating systems with some drivers and some situations may have a program in focus but from a code perspective it never gets the "focus gained" and so the code thinks "not focused" and all kinds of issues happen.
Thank you very much for this insight into this problem. I see it is not an easy task to do after all. 🤔

Re: mute the game while alt-tabbed

Posted: Sat Feb 27, 2021 7:27 pm
by Optera
At least in Windows it's trivial to read the focused window or make borderless fullscreen.
By now almost all games except Factorio have these features built in.

Though Borderless Gaming also adds it to games that for whatever reason won't support them. So this thread can continue running circles for another 7 years for all I care.

Re: mute the game while alt-tabbed

Posted: Fri Mar 12, 2021 1:50 am
by nuhll
lol?

is that so? I dont know.

I just know many games have it and i never had any issues with it.

I just know wow did read the windows titles which was opend while running wow. So maybe just do a simple "if windows title is not *factorio*"?

ATLEAST whats about a keybind for mute unmute? :roll: (so i make it just alt tab :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: )

edit:
literally 5 min google.. ? Just get the current window, and if its not *factorio* mute sound, check every 10 sec or something. finish, atleast for windows.

GetForegroundWindow

https://docs.microsoft.com/en-us/window ... oundwindow
InPtr hwnd = GetForegroundWindow();

public static void GetAppActiveWindow(IntPtr hwnd)
{
uint remoteThreadId = GetWindowThreadProcessId(hwnd, IntPtr.Zero);
uint currentThreadId = GetCurrentThreadId();
//AttachTrheadInput is needed so we can get the handle of a focused window in another app
AttachThreadInput(remoteThreadId, currentThreadId, true);
//Get the handle of a focused window
IntPtr focussed = GetFocus();

StringBuilder activechild = new StringBuilder(256);
GetWindowText(focussed, activechild, 256);
string textchld = activechild.ToString();
if (textchld.Length > 0)
{
Console.WriteLine("The active Child window is " + textchld + " .");

}
//Now detach since we got the focused handle
AttachThreadInput(remoteThreadId, currentThreadId, false);
}
???

Re: mute the game while alt-tabbed

Posted: Fri Mar 12, 2021 5:59 am
by Optera
When you program the window yourself there's not even a need to poll.
https://docs.microsoft.com/en-us/dotnet ... ew=net-5.0

or with 1min more google-foo for cpp: https://stackoverflow.com/questions/142 ... focus-in-c

Re: mute the game while alt-tabbed

Posted: Fri Mar 12, 2021 9:19 am
by posila
nuhll: you guys should do this, it's super easy, barely an inconvenience, here's stackoverflow link on how to do it
also nuhll: I have this weird hang issue nobody else has, that went away after rebooting my computer, but I decided it is somehow your bug that you should fix, and you have not fixed it yet
:D

Dev: I don't want to do this, because it'll be just code that won't randomly work properly on some computers for unknown reasons
nuhll: lol? is that so? I dont know.
:lol: :lol: :lol:

Dude, if you want me forever to step into another pile of technical support shit, make me at least feel like it is worth it (if you know what I mean, huehuehue) and don't frame it like "it's super easy, why have you not done it yet"

Anyway, since you guys are linking sites on how to achieve this using WinAPI, in 1.1.27 there is directsound-global-focus in config.ini, if you change it to false, sound will be muted when the game window doesn't have input focus. It's done through DirectSound flag, so if it doesn't work for you in any way (sound doesn't get muted when the window loses focus, or doesn't get unmuted when it regains focus, or it gets muted randomly while not losing focus, ...), I don't care, I can't fix it and it's not my problem.

Re: mute the game while alt-tabbed

Posted: Fri Mar 12, 2021 9:29 am
by MarvinCZ
And would it please be possible to at least have a key binding for "Mute"?
It could be unset by default so users won't mute game by mistake, but other users could map it themselves if they wanted.

Re: mute the game while alt-tabbed

Posted: Fri Mar 12, 2021 2:48 pm
by ptx0
Optera wrote: Fri Mar 12, 2021 5:59 am When you program the window yourself there's not even a need to poll.
https://docs.microsoft.com/en-us/dotnet ... ew=net-5.0

or with 1min more google-foo for cpp: https://stackoverflow.com/questions/142 ... focus-in-c
not for full screen games!

Re: mute the game while alt-tabbed

Posted: Fri Mar 12, 2021 2:49 pm
by ptx0
posila wrote: Fri Mar 12, 2021 9:19 am will be muted when the game window doesn't have input focus. It's done through DirectSound flag, so if it doesn't work for you in any way (sound doesn't get muted when the window loses focus, or doesn't get unmuted when it regains focus, or it gets muted randomly while not losing focus, ...), I don't care, I can't fix it and it's not my problem.
yeah, DirectSound is deprecated.

Re: mute the game while alt-tabbed

Posted: Fri Mar 12, 2021 2:53 pm
by Optera
ptx0 wrote: Fri Mar 12, 2021 2:48 pm
Optera wrote: Fri Mar 12, 2021 5:59 am When you program the window yourself there's not even a need to poll.
https://docs.microsoft.com/en-us/dotnet ... ew=net-5.0

or with 1min more google-foo for cpp: https://stackoverflow.com/questions/142 ... focus-in-c
not for full screen games!
That's one of the reasons I prefer borderless windowed over fullscreen.

Re: mute the game while alt-tabbed

Posted: Fri Mar 12, 2021 3:20 pm
by ptx0
Optera wrote: Fri Mar 12, 2021 2:53 pm That's one of the reasons I prefer borderless windowed over fullscreen.
https://devblogs.microsoft.com/directx/ ... mizations/

it has substantial performance overhead due to compositing.

Re: mute the game while alt-tabbed

Posted: Fri Mar 12, 2021 6:45 pm
by Optera
ptx0 wrote: Fri Mar 12, 2021 3:20 pm https://devblogs.microsoft.com/directx/ ... mizations/

it has substantial performance overhead due to compositing.
About time MS realizes FSE is an overall worse gaming experience than BW.

Re: mute the game while alt-tabbed

Posted: Fri Mar 12, 2021 6:55 pm
by ptx0
Optera wrote: Fri Mar 12, 2021 6:45 pm About time MS realizes FSE is an overall worse gaming experience than BW.
it's that the demand for a pretty, composited, interface conflicts with the demand for seamless and highly performant environments.

Re: mute the game while alt-tabbed

Posted: Sun Mar 14, 2021 1:05 am
by nuhll
posila wrote: Fri Mar 12, 2021 9:19 am nuhll: you guys should do this, it's super easy, barely an inconvenience, here's stackoverflow link on how to do it
also nuhll: I have this weird hang issue nobody else has, that went away after rebooting my computer, but I decided it is somehow your bug that you should fix, and you have not fixed it yet
:D

Dev: I don't want to do this, because it'll be just code that won't randomly work properly on some computers for unknown reasons
nuhll: lol? is that so? I dont know.
:lol: :lol: :lol:

Dude, if you want me forever to step into another pile of technical support shit, make me at least feel like it is worth it (if you know what I mean, huehuehue) and don't frame it like "it's super easy, why have you not done it yet"

Anyway, since you guys are linking sites on how to achieve this using WinAPI, in 1.1.27 there is directsound-global-focus in config.ini, if you change it to false, sound will be muted when the game window doesn't have input focus. It's done through DirectSound flag, so if it doesn't work for you in any way (sound doesn't get muted when the window loses focus, or doesn't get unmuted when it regains focus, or it gets muted randomly while not losing focus, ...), I don't care, I can't fix it and it's not my problem.
I posted a strange bug, which resolved itself and i even reported that correctly. And it happend on different days (where i also rebootet, else i wouldnt have posted it) Dont know how it shouldnt be YOUR bug when its ONLY YOUR GAME hanging, other games and programs working. :roll: Should i reverse engineer it as a customer? Ask microsoft about it?

I dont have any programming knowledge i just wanted to help. Thats why i searched it and instant found something. I thought it might be helpfull.

I dont have any directsound* in config.ini in Roaming\Factorio, im on .27 (added it to [sound] as directsound-global-focus=true ) - dont work

This feature is asked for years from different people why so aggro i dont get it. Its not my fault windows sucks or something. I just know its possible and there are different ways to archieve it.

edit:
directsound-global-focus=false works

nice,thanks

Re: mute the game while alt-tabbed

Posted: Sun Mar 14, 2021 8:02 am
by bormand
nuhll wrote: Sun Mar 14, 2021 1:05 am I dont have any programming knowledge i just wanted to help. Thats why i searched it and instant found something. I thought it might be helpfull.
I'm sorry for being rude, but do you think devs can't google themselves?

The real cost of a feature is not an implementation, which might be rather trivial, but research, testing and support. If you add a feature, you must support it for years across many hardware and software configurations. People will blame you if something doesn't work 5 years later with a heavily customized OS and/or broken hardware. So, prepare to spend your time reading bug reports. And random snippets from the internet usually lack some important details, so prepare to spend some time searching for known bugs and pitfalls.

If you had more experience with programming, that hidden cost should be quite obvious to you.

Re: mute the game while alt-tabbed

Posted: Sun Mar 14, 2021 9:39 am
by posila
nuhll wrote: Sun Mar 14, 2021 1:05 am...
You reported it correctly. I ment you as an example of someone who experienced strange random software issue, that also randomly resolved itself (but despite that you still saw it as something wrong on our side) ... and at the same time as someone who seems to have hard time to imagine, that strange random software issues happen.

However, what I wanted to say in my aggrevatingly written post was that I, personally, don't want to get into implementing suggestions or requests that assess the difficulty of implementation.