68

I have a new 6870 Amd Radeon adapter with its drivers set to 1080p 60Hz resolution hooked up to a 2008 47" high end Samsung HDMI based TV.

However, when the tv is turned to a different HDMI input -(when I come back into windows) somehow Windows decides to resize all the open apps to a lower resolution - including some of the side docked hidden pop-outs. When it resizes those though - it just sticked the pop-outs in the middle of the screen and all the resized windows from the open applications in the top left corner - all of them stacked on top of each other and resized to the smaller resolution.

The things that seem to be ok after returning are the icons on the desktop, the taskbar, and the sidebar.

Anyone have any knowledge of 1) how this happens 2) why it happens 3) how to stop it from resizing the applications and some of the docked pop-outs (they are not really resized after returning - they are just stuck in the middle of the screen approximately where they would be if the right or bottom sidebar should be if the screen was resized to that lower resolution).

My hypothesis is that upon losing HDMI signal - that Windows is told by something (driver, or windows itself) that the resolution to be without a signal being present (noting that HDMI signals and handshakes are two way on HDMI devices. If it loses the signal or the tv is switched to another device - then the display adapter must figure that out and tell Windows or figures it out and designs randomly to change the display size).

Any and all help is most appreciated. I asked AMD/ATI - but they said they don't know why or how this is happening. I was hoping that maybe this is THE place that the super users truly go to - those that develop display adapter drivers, or that dive deeply into these areas of windows. If there is better sites or just competing sites - please advise - noting I have already written AMD/ATI.

Response / Additions 4/7/2011

It is really nice to get your reply Shinrai. (BTW is it proper etiquette on these forums to have a discussion?) Yet 'only one issue' - I am using a single display in this case - so Windows doesn't move application windows to another desktop. Windows (or something) decides to shrink the desktop it currently has and resize all windows to the maximum size of the desktop. As such I would be glad if Windows would just keep the current size of the one desktop that is in operation.

I also know that this does NOT happen on monitors connected with DVI. There I have had one and two monitors setup and it doesn't resize those screens at all when disconnecting monitors, turning them off, whatever... they stay solid - everything in place - to such an extent that if you forgot the other monitor is off - you will have troubles finding some windows without using one of the control app utilities.

So if I could even get the HDMI handling by Windows (or the display driver) ( 1] which is doing this anyway the display driver or Windows - and 2] where is that other resolution size (1024x768) coming from - its not the smallest and its not the largest?) to be having like DVI - Life would be golden (for this aspect anyway).

** found others with same problem in this thread: http://hardforum.com/showthread.php?t=1507324

Hennes
  • 65,804
  • 7
  • 115
  • 169

20 Answers20

35

I have been digging around this problem for two days, and found few types of solutions:

  1. Universal solution, software program PersistentWindows, which saves all windows position and monitors display. If the resolution is changed and changed back, then it restores the same sizes and positions! Exactly what I wanted. The latest version just does its work, and silently sits in the systray. Link

  2. Fork of #1. but requires Windows 10 Creators Update. Better high DPI support. More CPU efficient. Link

  3. For some ATI users work, for some not, there are confirmations that it works. The solution is to use registry hack with key DMMEnableDDCPolling, to disable monitor connection polling under Windows at all. The caveat is that you need to restart the system after the change, and in case you need just quickly connect some external screen, it is not convenient. Link

  4. Lucky are NVIDIA card owners. The solution is to hardcode monitor EDID information to a VGA driver's onfile, and thus system thinks that this does not change. Managing a Display EDID on windows

  5. Hardware solution for HDMI connection, they sell their adapters on the web and also eBay. Link

  6. One more utility Windows Layout Manager to save the layouts and restore them on demand (management of various layouts). Much more complex and more powerful, but might be overkill to regular users. Link

I stick with #1 for a while (already since 2015 :) ), and if will find more, they will share.

Update 2024: Windows got better with window management, but I moved to Apple for many year already, it does remember windows even after system reboot.

Arunas Bart
  • 1,766
17

I had this issue with my Radeon R9, all I did was to disable the GPU scalling at AMD Catalyst.

But for some reason still occurs, first backup your registry! Then open your windows registry and go to:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration

Only under the "SIMULATED" or "NOEDID" keys (Windows 10), change the keys decimals to:

PrimSurfSize.cx = 1920
PrimSurfSize.cy = 1080

Under "00":

ActiveSize.cx = 1920
ActiveSize.cy = 1080

Change to what ever resolution you are using. This will prevent your window to shrink or move from one side to the other when you turn your monitor off.

variant
  • 2,000
Nomura
  • 179
5

Your hunch is correct; the monitor is essentially shutting off the handshake on that HDMI channel when you switch the input. Windows 7 sees this as "There is no longer a monitor connected here", at which point it disables that output. Since that screen no longer exists, everything that was on it has to go SOMEWHERE, so it shuffles everything onto your remaining displays, and it is not graceful. When the display returns, Windows 7 will remember how you had things arranged to some extent, but it's not going to shuffle your windows back around (you may have closed or opened or otherwise moved them in the interim, after all!).

There's nothing you can do with display drivers that can fix this; it's the behavior of the operating system and while it's inconvenient for your situation it makes sense. (The alternative is having things on monitors that don't actually exist, which XP did sometimes and let me tell you it was a nightmare.) There may be some third party software that can force this to not occur, but I don't know of any offhand and I suspect you'd run the risk of causing other problems. (If anybody can actually post any I'll be glad to upvote those answers.)

Shinrai
  • 18,876
3

Highly recommend a pure software solution "PersistentWindows" ( original version ), as mentioned by previous posts.

The application keeps track of window size/location, and automatically restores their last layout when the same monitor setup is alive again.

Based on the original source code and a runtime optimized version on github, I managed to make further improvements as follows,

  1. Fix random hang due to massive window resize requests and visual studio code update.

  2. More reliable remote desktop experience

  3. Can be run as windows startup job

For those who want to give the new version a try, here is the release link PersistentWindows

Enjoy!

Kang Yu
  • 71
3

Your problem sounds like a variation of the one described here, which is also caused by loss of the HDMI handshake. The same hardware solution might work for you: place an Apogee 3x1 HDMI mini switcher between the PC and the TV, and it will make the PC think it isn't disconnected. I don't know whether any HDMI switcher will work or just the Apogee recommended at the above link.

mirh
  • 1,172
gatkin
  • 611
3

No additional hardware required

  1. Install TeamViewer or Chrome Remote desktop on the computer with the problem, and enable remote connections.
  2. Turn the TV/monitor off.
  3. The resolution changes on its own.
  4. Log into the computer remotely using the software from step 1. As stated in the question, the resolution has changed.
  5. Increase the resolution back to normal (as it is when the TV/monitor is on), using your remote connection.
  6. The resolution will no longer switch when the TV/monitor is turned off.
brismuth
  • 131
2

This is a super old question, but I actually have a really simple fix for Windows 10 users (It may work for 7 and 8, not sure).

I specifically wanted my windows to remember their positions, and was using a KVM to switch between two computers, but whenever I'd switch back, all the windows would move back to the primary monitor.

I found that if you click the small "Minimize All Windows" sliver in the bottom right, on your taskbar, before you make the switch, when you come back you can just click it again and the windows will return to their previous positions.

Ecksters
  • 155
2

After months of frustration and finally finding this thread, I found a workaround that seems to work for my single display setup (Windows 7 x64 + 24" Insignia TV). This is a generalization of the solution by David M., with the following advantages:

  • HDMI/DVI adapter not required
  • Can use VGA cable instead of DVI cable + adapter
  • Keep HDMI audio output (vital for my TV, which only supports audio line-in for its blurry analog VGA input)

However, a free VGA (PC) input on TV is needed, and two cables get committed to the setup:

  1. Connect PC to TV with HDMI cable
  2. Also connect PC to TV with VGA cable
  3. Control Panel > Display > Multiple displays > Duplicate these displays

Alternatively, DVI cable + DVI/HDMI adapter in step 2 also worked; the key observation was David M. pointing out that DVI works fine.

Now, when I power cycle or change input sources on my TV, the windows don't shrink or stack onto the top left. Not sure if this all worked just because my TV is so low-end...

ypeels
  • 21
2

The issue is caused by an annoy "feature" of Windows 7/8 to re-arrange application windows when HDMI/Display port connected monitor/TV "turned off" or "switch to" different input.

There is a hardware workaround if you use HDMI connection. Search ebay for "monitor detection" and get one around $20. It works for me on a Seiki 39" 4K TV with HDMI connection.

free2go
  • 21
2

Not a fix, but a workaround. I noticed that if you minimize windows before the display is powered off and do not restore them until the display has returned, then the windows are not rearranged.

I leverage that fact to provide a 'seamless' experience for myself as I have documented here: http://thelamprechts.blogspot.com/2014/09/a-windows-workaround-to-maintain-window.html

shjibby
  • 39
1

If you don't want to install any additional software or buy a specialized hardware device, you can workaround by minimizing all open windows before turning off that monitor. You can quickly achieve this by using the Show Desktop button at the end of the taskbar. When you come back to that monitor just click the Show Desktop button again and it'll restore all open windows the way they were.

Carlos
  • 11
1

I was having the same problem on my LG 42" TV. After reading the posts here about spoofing the signal to Windows I thought of something. I had an extra DVI-HDMI adapter I no longer used. Plugged that into the DVI port on my video card and then the HDMI into that and no longer get the issue of windows re-sizing and whatnot. So it happened to be a really easy fix. You can get them at RadioShack or pretty much any electronics store. I'm glad I got this sorted out. Hopefully it works for others.

1

Researching the same problem, I found this thread claiming it can be repaired by messing around in the registry. I also found a thread by a guy who claimed it was a result of using DisplayPort.

I tried the registry fix, and it didn't seem to work (although I didn't reboot, if that makes a difference). Additionally, my misbehaving device is connected to a displayport on my graphics card from a DVI port on my monitor, and unfortunately I can't confirm the second account since I don't have appropriate adapters. But, I thought it might be useful.

Edit: ok, I got desperate and actually drove out to borrow a cable for this attempt. Changing from a DVI-I cable with DVI/DisplayPort adapter cable to a single-cable DVI-I/HDMI cable has fixed this for me. To me this suggests either that it is indeed a problem with DisplayPort, as suggested by the guy on HardForum, or that it's a side effect of using cable adapters. Either way, happy to be done with it.

bwerks
  • 1,523
1

If you're using ATI you will need to create a new key in the registry under HKEY_LOCAL_MACHINE > System called DMMEnableDDCPolling. Set the Value to 0. It disables the video card from polling to see if something is still connected basically.

If you're using something other than ATI search the registry for the key DMMEnableDDCPolling and set the value to zero. NOTE: THE KEY CAN EXIST IN MORE THAN ONE PLACE. From what I read you must replace the value with 0 for every instance of that key.

Source.

nc4pk
  • 9,257
  • 14
  • 61
  • 71
Tyler
  • 11
0

I had a similar issue since upgrading a Windows 10 machine to TH2 in November 2016.

Due to the various side effects a TV power cycle was having on my apps and desktop I eventually realized that turning off and on the TV caused Windows 10 to trigger a change of resolution and/or font size/DPI.

After some research I forced the same DPI for all my displays, virtual and physical by doing the following:

  • Go in Control Panel\Appearance and Personalization\Display.
  • Click on set custom scaling level.
  • Set it to whatever works for you. 100% was working fine for me.

Here is a link on how to adjust scaling.

nKn
  • 5,832
Slion
  • 101
0

I had this issue with a computer going to screen saver. When it resumed, my windows were re sized. I solved it by changing to another screen saver and then reverting back to the "photos slide show" screen saver.

0

I was able to stop this resolution change by going into catalyst control center and turning on force edid emulation. Fixed!! Of course you need an AMD card and this feature needs to be present but I guess NVIDIA should have something like this too.

InterLinked
  • 2,635
0

Easy workaround: “Windows Key + m” prior to switching and “Windows Key + Shift + m” when you have returned to that computer. I wrote a small script, which does that automatically. Works perfectly.

0

I just wanted to share my Answer to this problem. I use an OLED Samsung TV as my Main Monitor, and was having a very similar issue to the OP, where if I only had the Display connected, and it was my TV, when the TV turned off but the computer stayed on, when I turned the TV back on, all of my windows would be resized because Windows treated my display like it had been disconnected completely whenever my TV turned off. (And its an OLED so I want it to turn off when I am not using it, so it was set to turn off automatically after an hour of no activity.)

And then the problem got even worse for me when I added multiple monitors to my setup, but kept my OLED as the Main Display, because now when the TV Turned off it would shuffle all of my open windows to the other monitors, and a few of my more sensitive apps would Crash during this reshuffle, so this problem really got annoying.

I tried everything I could think of, I even bought an EDID Manager, specifically HDFury's Dr. HDMI 8K which has something called "HTPC Mode", which sounded like exactly what I wanted, but unfortunately that did not work in my case because when the TV Turned back on, nothing would display on the TV at all until I reset the PC, which defeated the purpose of the EDID Manager to begin with.

I also tried Putting Electrical tape over Pin 19 on the HDMI Cable, which at first I thought was working because Windows did not detect the TV disconnecting when I turned it off, but it was the same problem as the EDID Manger I bought, in that the TV would not display anything when turned back on.

So I found 2 Ways to solve this problem. But the 1st way is definitely what I would recommend, as its the easiest to do and completely solves the problem, you just have to spend some money.

  1. Buy an HDMI Splitter, just a 1 In 2 Out Splitter. Connect Your GPU to the Input of the Splitter, then just connect 1 Output to your TV. This works because Power remains in the HDMI Splitter when you power down your TV, so signal is still sent to the PC, and it never disconnects. So Windows believes your TV is still powered on, and all your Windows stay right where they are. Then when you turn back on your TV, everything is right where it is supposed to be, this worked FLAWLESSLY for me. In my case this was a little bit more of a PIA because I use my TV in 4k120hz with HDR and VVR, meaning I needed an HDMI Splitter that supported all of these things. But thankfully those do exist now, and I bought one on Amazon for $70 that had all of these capabilities, and it just worked. However if your TV that you are connecting to your PC is 4k60hz and Below, then you can use just a generic HDMI Splitter and it will work great for you. The One I used that supported 4K 120hz HDR and VVR, was the splitter by Ezco on Amazon, just search for HDMI 2.1 Splitter, and it will be one of the first to pop up.

  2. The second way I found to defeat this problem is a little more involved, but it also worked great, it just didn't work on Windows 10 with HDR, however on the same PC booted to Windows 11 it worked with HDR. What I did was install a Virtual Monitor Driver like the one found one github called "Virtual-Display-Driver", found here: https://github.com/itsmikethetech/Virtual-Display-Driver

Once I got the Virtual Monitor setup and recognized by Windows, I simply went into the Normal Display Settings, and setup the Virtual Monitor to be a Clone of my TV Display. Once that was setup, I could turn off my TV, and Windows will promptly recognize the TV is off so all the Screens will flash black for about 2 seconds, but then immediately all come back up, and none of the Windows were resized or moved. This is because Windows takes a second to disconnect the TV display, but then because that virtual monitor is still connected and it was a clone of the TV you turned off, all your Open Windows stay open on that Virtual Display, and then when you turn the TV back on, your screens will go black again for about 2 seconds, but then it automatically puts your TV and the Virtual Monitor back in duplicate mode, and all your Windows stay right where they were before you turned the TV off. This method works great and doesn't require you to purchase anything. The reason why I went with the first option though was because I want to use my TV in 4k 120hz HDR with VVR in Windows 10, and the best I could get the Virtual Monitor to support was 4k 120hz, no HDR and No VVR, for me that was a deal breaker, so I went went this first option and bought the $70 HDMI Splitter that supported all of that, but for people who don't care about HDR or VVR, then this solution did work great!

Anyways, this actually does solve this problem as far as I can tell, try it, and let me know if it worked for you as well!

0

In case anyone else encounters this, I'll just add my "fix". I found out that Windows 8.1 resized all of my windows/programs and such, when I put them on my TV. (Connected to my laptop, through a HDMI port.) I had to access the screen resolution menu, choose "Make text and other items larger or smaller", choose "Lad me choose one size for alle monitors" And then let them stay at 100%. DONE!