I've had many laptops over the course of many years, and while many things have sped up, one thing remains as slow today as it was years ago: (dis)connecting an external display. What's taking it so long to detect the new display and update the pixel buffers? I use Macs primarily, but I think this is equally slow on other platforms.
migrated from stackoverflow.com May 19 '10 at 18:00
This question came from our site for professional and enthusiast programmers.
I certainly don't know the answer, but I'm reminded of something I read in Owen Taylor's Boot Poster Challenge:
DDC seems to be an I2C-based system, so 100kbps on the wire, but also whatever MCU/EEPROM they've got on the other end of it. Plus maybe the graphics card doesn't even assume there's a DDC bus there to be probed, so it does some hardware probing first to make sure it looks sane before trying to chat.
Beyond that, I can guess...
It could also be a social/economic reason: nobody ever tests or advertises start-up time for displays. I doubt there are many display engineers sitting around saying "we should make the DDC probe (or whatever the bottleneck is) faster!". Since no tech reviewer ever mentions it, and no review site lists it, it's not big bang for their buck.
And the prime use case for displays might not even be plugging in laptops. If they think it's turning on your PC at the start of the day (I don't know if it's true or not, but if they think it is), then the time it takes to get to a useful screen is going to be dominated by the OS booting, the backlight getting up to brightness, etc.
Finally, software in embedded systems tends to be really awful. Have you tried using the on-screen display on an LCD recently? That's the same system. :-)
Of course, for unplugging the display, I have no idea. You think it'd be faster, but it really isn't. Maybe they do a whole "probe all displays when anything changes", though I don't know why that should be necessary.
That's a great question.
Obviously, this is OS dependent.
Much of the time goes to recalculating the sizes and locations of all the windows, and then repainting them, which triggers a whole chain of repaints down to their smaller components. Fonts and other things may need to be reloaded or rescaled as well.