Place Your Bets: How Will Microsoft Screw This Up?


  • Banned

    @boomzilla they used to do things in a simpler way. Back then, people made fun of how primitive and fragile the Windows ways are. And rightfully so.



  • @TwelveBaud said in Place Your Bets: How Will Microsoft Screw This Up?:

    One EXE can have multiple apps. Mail, Contacts, and People are were (until Windows 10 1803) the single app "Windows Communication Apps"; the specific UWP app you want to launch gets specified in the launch contract invocation sent to it once the EXE starts up. This was done so that all of the bonus services (e.g. tile updates, streaming audio, embedding in another app) can live in a single EXE, a single process.

    And there is no default "service" defined for when you start the EXE without any arguments? :facepalm:



  • @TimeBandit Correct. How does it know you're not activating it for contacting its Share Charm Contract? The host process can be started for any of the COM (!) servers it contains, which usually happens without arguments. The only one people use anymore is the Launch Contract, buuuuuuuut...



  • @El_Heffe said in Place Your Bets: How Will Microsoft Screw This Up?:

    C:\Windows\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe

    Filename courtesy of the Microsoft Redundancy Department of Redundancy at Microsoft.





  • @Cursorkeys said in Place Your Bets: How Will Microsoft Screw This Up?:

    if you like seeing heavy machinery commit seppuku

    I'm so used to it being referred to as "commit sudoku" that it almost looks wrong when you use the correct word there.



  • @topspin said in Place Your Bets: How Will Microsoft Screw This Up?:

    after adding the empty div the engine decided there's more than just the video in that rectangle

    That would be a bug in the engine, then, because there wasn't.

    Next, they should try putting a completely transparent GIF or PNG in front of the video. There still isn't anything other than video. Completely transparent pixels shouldn't affect composition.


  • Considered Harmful

    @anotherusername said in Place Your Bets: How Will Microsoft Screw This Up?:

    @Cursorkeys said in Place Your Bets: How Will Microsoft Screw This Up?:

    if you like seeing heavy machinery commit seppuku

    I'm so used to it being referred to as "commit sudoku" that it almost looks wrong when you use the correct word there.

    I read it as sudoku in the first place, if I recall.



  • @Gribnit So did I. I had to do a double-take when I noticed that it wasn't.



  • @anotherusername said in Place Your Bets: How Will Microsoft Screw This Up?:

    Completely transparent pixels shouldn't affect composition.

    In the nothing-but-the-video case, the compositor can take the fastpath because (until a re-layout occurs) it's guaranteed that nothing will be over the video, it can shoot it (in compressed, un-decoded form) straight to the video card and tell it to smash it directly onto the screen.

    Even if it's just a transparent DIV, the engine can't assume that things don't change every frame -- CSS animations break that for a start. So it has to check each and every pixel, each and every frame, to make sure that it's still 100% transparent in order to take the fastpath. And the overhead from that is prohibitive enough that it might as well do things the long way: have the video card decode the video and grab it back, prepare all the layers itself, and tell the card to draw them.



  • @TwelveBaud The browser should know whether things are going to change in any given frame. It controls that. If the div has no visible (or non-transparent) child elements, no non-transparent properties of itself (background, border, outline, box-shadow, ...), and no CSS styles that can trigger such a property to apply (animations, :hover), then it cannot affect composition. And the browser is responsible for running any scripts on the page that might affect the div to make it visible, so it should know if and when that changes.

    I'm assuming that you can at least layer a mouse cursor on top of video even if you "smash it directly onto the screen". Otherwise you just couldn't do that unless the video player said to hide the mouse pointer whenever it's over the video, which typically isn't the case. They hide the pointer after a delay, usually, but it's visible when you move it over the video.



  • @anotherusername One of the first features of graphics acceleration was hardware cursors, so yes, that's already taken care of on the card.


  • Discourse touched me in a no-no place

    @topspin said in Place Your Bets: How Will Microsoft Screw This Up?:

    I don't know how it worked in detail, but going purely from "adding an empty hidden div broke it" doesn't necessarily mean the feature was a hack.

    FWIW, it makes me suspect a gross hack was present, or that the rendering engine is rather flaky in its interpretation of sites.


  • BINNED

    @anotherusername said in Place Your Bets: How Will Microsoft Screw This Up?:

    @TwelveBaud The browser should know whether things are going to change in any given frame. It controls that. If the div has no visible (or non-transparent) child elements, no non-transparent properties of itself (background, border, outline, box-shadow, ...), and no CSS styles that can trigger such a property to apply (animations, :hover), then it cannot affect composition. And the browser is responsible for running any scripts on the page that might affect the div to make it visible, so it should know if and when that changes.

    What you're doing here is arguing that it could detect these things with some more complicated logic and stay in the hardware accelerated fast path if everything that overlaps the video is in fact transparent. Of course it could, and apparently it's doing that now with the update. However, that doesn't mean that the previous simpler logic (assuming it worked like that, anyways) of checking if the video rectangle doesn't overlap with other content that needs to go through the compositor is a "hack that relied on the specific layout of youtube".
    It breaks when the website does stupid things (invisible content) is not the same as it breaks when the video moves 3px to the right.

    I'm assuming that you can at least layer a mouse cursor on top of video even if you "smash it directly onto the screen". Otherwise you just couldn't do that unless the video player said to hide the mouse pointer whenever it's over the video, which typically isn't the case. They hide the pointer after a delay, usually, but it's visible when you move it over the video.

    The cursor doesn't get rendered by Edge, only shown or hidden.



  • @TimeBandit said in Place Your Bets: How Will Microsoft Screw This Up?:

    design something sensible, with a nice GUI, instead of relying on that ancient crappy technology called the CLI, and passing some special arguments to the process that nobody knows abou

    No one is relying on CLI. This is not how you usually launch Edge in case you didn't know.



  • @El_Heffe said in Place Your Bets: How Will Microsoft Screw This Up?:

    @Parody said in Place Your Bets: How Will Microsoft Screw This Up?:

    EdgeHTML updates, however, have only been going out with the major OS feature updates. One supposed reason why is that the engine is tied to the other UWP applications

    I don't know what the deal is with Microsoft, but they always have to do everything in the most over-complicated, convoluted manner possible. For example, let's pretend that you actually want to run Edge, but you accidentally deleted the shortcut. No problem, just find the .exe file and click on it.

    Except, it's not located in \Program Files. No, creating a web browser that is a normal, stand-alone program, just like every other web browser that has existed since the beginning of time, would make too much sense. That just not The Microsoft Way®.

    Edge is special. It's a SystemApp

    so you'll find it in C:\Windows\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe

    And WTF is 8wekyb3d8bbwe?

    But wait, it gets better. If you click on MicrosoftEdge.exe, nothing happens. In order to run Edge you have to create a shortcut that contains The Magic Incantation®:

    explorer.exe shell:Appsfolder\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge

    Serously Microsoft? WTF?
    https://i.imgur.com/SglRVEH.png

    Why the fuck are you expecting a not-Win32 app to work like Win32 apps?

    Next you'll try to launch something on Ubuntu and complain that it's not on C:\Program Files\



  • @topspin said in Place Your Bets: How Will Microsoft Screw This Up?:

    What you're doing here is arguing that it could detect these things with some more complicated logic and stay in the hardware accelerated fast path if everything that overlaps the video is in fact transparent.

    No, I'm arguing that it should detect those things.

    Of course it could, and apparently it's doing that now with the update.

    Is it? I suspect it's doing something more like "ignore this specific empty div on YouTube because it breaks hardware video rendering". That "fixes" the bug without actually fixing it, and it's much easier than actually fixing it.

    I think the difference here is that you assume that Edge was well-designed and well-written, while I assume it is made of bad hacks on top of other bad hacks. Either argument could probably be made.

    It breaks when the website does stupid things (invisible content)

    An invisible div doesn't affect rendering, but it does affect other things, like click targets, cursor style, :hover styles... it could have :before and/or :after, or an outline or box-shadow that creates visible content outside of the video.

    As long as the part that covers the video is transparent, it shouldn't affect it. The code that does the compositing shouldn't have to deal with a completely transparent layer for the element -- it should be culled before it gets that far. This need not be checked every time is composited, either -- it would only change if the browser changes the graphic layer for that element, and could be cached in a single boolean value. Layers that only partly overlap a video could also be split into multiple layers for compositing, so only the rectangle that overlaps the video could affect it.

    I'm not even sure if this should be a problem, since web browsers like Chrome just send the whole page to the GPU for rendering anyway -- it creates graphic layers, and the GPU is tasked with compositing the layers. Rendering the layers in software would be much less efficient and if that's what Edge is doing then Chrome clearly has an advantage.


Log in to reply