Windows Client - Option to use WebView2 (Edge) as the primary rendering engine

I would like to request an option in the device configuration profile that allows us to use WebView2 (Edge) as the main rendering engine instead of CefSharp.

The reason behind this request is that over the past few years, I have encountered recurring errors with CefSharp appearing on the screen, and despite upgrading processors or increasing RAM, this issue continues to persist. On the other hand, I have never experienced such problems when layouts are rendered using Edge.

I am aware that there is already a whitelist for web pages with Edge, but the internal widgets are still rendered using CefSharp.

Is there any possibility for users to choose the primary rendering engine?
Thank you.

I 100% agree. WebView2 would be a great alternative

1 Like

I want to share my thoughts about this feature request.

We are planning to use windows computers for specific projects which have more graphical power built in for larger displays! This addition to use Edge instead of CefSharp will definitely help us. I think the behavior between Android and Windows will be more closer than before…

1 Like

Well, to give you an idea of my situation, I prefer to forgo the new features of V3 rather than use it and risk recurring bugs with CefSharp errors. When I say they are recurring, I mean they happen almost every single day, unfortunately. And these errors occur on both advanced and simpler equipment models.

The solution I’m currently adopting is using the R203 version because it uses Internet Explorer as the rendering engine. I’ve been using R203 for over a month on devices that previously had CefSharp errors, and so far, I haven’t encountered a SINGLE error with the Xibo Client.

The only drawback of the R203 Client (for my needs) is that the layer function is not functional. But it’s a sacrifice I’m willing to make to avoid having error logs displayed to my users.

In conclusion, I kindly ask you @dan @natasha to consider this possibility… or even consider to create a version of the Client WITHOUT CefSharp, using the native Edge or Internet Explorer of Windows. Something like a Light Client for Xibo.

Thank you very much, everyone!

I tottally agree.
In the end, the software’s performance might even become lighter, as it used to be in the past. But I’m not sure (I have to admit I have limited knowledge of Windows software development).
Nonetheless, I believe that having the option to choose would make the Xibo tool more democratic for use on devices with both lower and higher graphic/processing capabilities.

Any html content being made by designers is almost always going to use the latest chromium build. Where signage software falls behind often is when they are locked in to a specific and often older version of chromium.

Having the software use the operating systems’ WebView is the best option imo, and keeping at least that up to date will make content in html more compatible

1 Like

In R203 we use a “hack” to set the background image inside IE11, so that it looks like web content is transparent, but this does not work if you put widgets on top of each other. When moving to WPF we wanted to improve this, and IE11 was on the way out by then anyway. The only reason to choose CEFSharp over Edge WebView was fully transparent backgrounds (Compositing/Airspace).

If you want an (exciting?) read on the subject you can get one here: WebBrowser overlaps other controls in WPF? · Issue #356 · MicrosoftEdge/WebView2Feedback · GitHub

This problem still has not been solved as far as I can see from the above issue - although the latest post does say that it is being worked on.

The reverse of this is another, admittedly minor, reason we went with CEFSharp… so that we could guarantee the version of chromium that a particular player version was running. This makes it a lot easier for us to support. We keep it updated with each new release, so that we’re always on the latest available.

Have you been able to report these errors so that they can be looked at and potentially resolved? I ask because we’ve only got one bug recorded for issues with the webview (which we’ve not been able to solve). I’d be really keen to work with you to try and improve it.

The MSI would certainly be lighter :smile:

So the question is, would you be satisfied with no transparency support, not being able to use backgrounds or overlay widgets? If your use case does support that (such as full screen web pages perhaps, then I can certainly get behind an option to switch to this mode of operation).

However, until edge webview can support airspace, we can’t move Xibo’s core widgets over to it.

1 Like

It’s really sad that Microsoft can’t solve a problem that has already been resolved by third parties. Hopefully, the solution is truly on its way as they said.

Unfortunately: Yes, it would be helpful, at least until Microsoft supposedly releases a fix for WPF usage. As I mentioned here, I had to give up on the innovations of the R30*/R25* client due to recurring CefSharp bugs being displayed on the screen.

I’m not sure if it would be possible to implement something in the Watchdog to identify these errors and restart the application. I could even send you the Windows event logs that record the CefSharp errors, if it’s useful.
But still, having the option to switch to a different mode of operation would be helpful.

Thank you very much for the awnser and the detailed explanation, @dan, i really appreciate it
Have a great week.

You’re welcome!

Which Widgets would you optionally use this for? Embedded, Web Page, HLS (already Edge), others?

Yes absolutely, I don’t know what the errors are at the moment, so it may be that there is an easy fix or some mitigation we can make to improve the situation.

Yes, embedded, webpage, datasetticker, RSS, stocks, currencies, text (if is possible)…

That’s the error from R25* till R307 .

From version R308/R309 it just turn into a black screen. But the application error on the Windows event it’s the same.
It throws a .Net Runtime error, than a application error… but sometimes it’s just one of them (mostly Application Error).

.NetError:

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name=".NET Runtime" /> 
  <EventID Qualifiers="0">1026</EventID> 
  <Version>0</Version> 
  <Level>2</Level> 
  <Task>0</Task> 
  <Opcode>0</Opcode> 
  <Keywords>0x80000000000000</Keywords> 
  <TimeCreated SystemTime="2023-05-29T08:01:39.1803053Z" /> 
  <EventRecordID>66341</EventRecordID> 
  <Correlation /> 
  <Execution ProcessID="0" ThreadID="0" /> 
  <Channel>Application</Channel> 
  <Computer>MYDEVICE</Computer> 
  <Security /> 
  </System>
- <EventData>
  <Data>Aplicativo: CefSharp.BrowserSubprocess.exe Versão do Framework: v4.0.30319 Descrição: O processo foi terminado devido a uma exceção sem tratamento. Informações da Exceção: System.Runtime.InteropServices.SEHException em <Module>.CefExecuteProcess(CefMainArgs*, scoped_refptr<CefApp>*, Void*) em CefSharp.BrowserSubprocess.SubProcess.Run() em CefSharp.BrowserSubprocess.BrowserSubprocessExecutable.Main(System.Collections.Generic.IEnumerable`1<System.String>, CefSharp.RenderProcess.IRenderProcessHandler) em CefSharp.BrowserSubprocess.Program.Main(System.String[])</Data> 
  </EventData>
  </Event>

Application Error:

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name="Application Error" /> 
  <EventID Qualifiers="0">1000</EventID> 
  <Version>0</Version> 
  <Level>2</Level> 
  <Task>100</Task> 
  <Opcode>0</Opcode> 
  <Keywords>0x80000000000000</Keywords> 
  <TimeCreated SystemTime="2023-05-29T08:01:40.1619365Z" /> 
  <EventRecordID>66342</EventRecordID> 
  <Correlation /> 
  <Execution ProcessID="0" ThreadID="0" /> 
  <Channel>Application</Channel> 
  <Computer>MYDEVICE</Computer> 
  <Security /> 
  </System>
- <EventData>
  <Data>CefSharp.BrowserSubprocess.exe</Data> 
  <Data>111.2.20.0</Data> 
  <Data>d052c3b4</Data> 
  <Data>KERNELBASE.dll</Data> 
  <Data>10.0.19041.2965</Data> 
  <Data>f18c1c30</Data> 
  <Data>e0000008</Data> 
  <Data>0013d6c2</Data> 
  <Data>4c0</Data> 
  <Data>01d992005fb1def5</Data> 
  <Data>C:\Program Files (x86)\SuaTV\CefSharp.BrowserSubprocess.exe</Data> 
  <Data>C:\Windows\System32\KERNELBASE.dll</Data> 
  <Data>947c778b-06c0-4326-8433-67480d9707ea</Data> 
  <Data /> 
  <Data /> 
  </EventData>
  </Event>

Sometimes, the aplicattion error it’s a bit different:

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name="Application Error" /> 
  <EventID Qualifiers="0">1000</EventID> 
  <Version>0</Version> 
  <Level>2</Level> 
  <Task>100</Task> 
  <Opcode>0</Opcode> 
  <Keywords>0x80000000000000</Keywords> 
  <TimeCreated SystemTime="2023-05-29T08:37:19.0674869Z" /> 
  <EventRecordID>66347</EventRecordID> 
  <Correlation /> 
  <Execution ProcessID="0" ThreadID="0" /> 
  <Channel>Application</Channel> 
  <Computer>MYDEVICE</Computer> 
  <Security /> 
  </System>
- <EventData>
  <Data>dwm.exe</Data> 
  <Data>10.0.19041.746</Data> 
  <Data>6be51595</Data> 
  <Data>KERNELBASE.dll</Data> 
  <Data>10.0.19041.2913</Data> 
  <Data>a1c3e870</Data> 
  <Data>e0464645</Data> 
  <Data>000000000012d862</Data> 
  <Data>1dc8</Data> 
  <Data>01d990b11491c126</Data> 
  <Data>C:\Windows\system32\dwm.exe</Data> 
  <Data>C:\Windows\System32\KERNELBASE.dll</Data> 
  <Data>e20ef954-0320-45ea-addd-a843c2e081fa</Data> 
  <Data /> 
  <Data /> 
  </EventData>
  </Event>

Thanks for the errors, I’ll take a look at them

1 Like

In your local library on the player there might be a CEF log file contained in <library>\CEF\cef.log - if there is would you mind sending it over please?

There may also be logs in the Xibo log for the exception (in R308/R309), they will be under the Main page filter in CMS logs.

I’ve created an issue to be addressed in v3 R310 which allows Web Page, Embedded and HTML Package to “fallback to edge” via a configuration option which can be set locally on the player in the config.xml file.

Unfortunately it wasn’t possible to do it for other widgets due to the linked issue with Edge. There has been another comment on that issue, but no updates as yet.

Hi Dan!

Both are completly blank… even after the bug shows up…
I will keep looking for it

I feared that might be the case, I suspect that because its an unhandled exception there is no opportunity for that process to catch it. I think the webpage that is being displayed is leaking memory.

I have a beta release of R310 available here which includes the option to put <FallbackToEdge>True</FallbackToEdge> in the local library config.xml file.

This option will switch all webpage/embedded/HTML package widgets to use Edge (in the case of embedded the Browser Tag will still override this). It will be interesting to see if this solves the problem for you, or at least mitigates it slightly.

Not sure if this is related but I tried the R310 beta release to see if rendering improved on 11th gen CPU hardware. Regrettably it’s not. I still see sometimes that parts of a layout are not rendered. Layouts with a background and two non-overlapping text-widgets are now and then missing one of the widget.

I do not get the CEFSharp error as pictured above.

Thanks - the issue you’re seeing is recorded here: Web based widgets misbehaving on PC with Intel 11th Gen Xe Graphics · Issue #239 · xibosignage/xibo-dotnetclient · GitHub as isn’t something we’re able to solve.

In an ideal world the issue with Edge webview above will get solved (they are working on it) and then we can use that instead of cefsharp, which in turn will solve your issue (I think).

Dan, i was able to get a CEF log from R308 during an error:

[0715/162433.207:ERROR:raster_decoder.cc(2960)] [.RenderWorker-208BCA00]GL ERROR :GL_INVALID_OPERATION : glBeginRasterCHROMIUM: failed to create surface
[0715/162433.212:ERROR:raster_decoder.cc(3021)] [.RenderWorker-208BCA00]GL ERROR :GL_INVALID_OPERATION : glRasterCHROMIUM: RasterCHROMIUM without BeginRasterCHROMIUM
[0715/162433.212:ERROR:raster_decoder.cc(3106)] [.RenderWorker-208BCA00]GL ERROR :GL_INVALID_OPERATION : glEndRasterCHROMIUM: EndRasterCHROMIUM without BeginRasterCHROMIUM
[0715/162533.005:ERROR:raster_decoder.cc(2960)] [.RenderWorker-316BCA00]GL ERROR :GL_INVALID_OPERATION : glBeginRasterCHROMIUM: failed to create surface
[0715/162533.009:ERROR:raster_decoder.cc(3021)] [.RenderWorker-316BCA00]GL ERROR :GL_INVALID_OPERATION : glRasterCHROMIUM: RasterCHROMIUM without BeginRasterCHROMIUM
[0715/162533.010:ERROR:raster_decoder.cc(3106)] [.RenderWorker-316BCA00]GL ERROR :GL_INVALID_OPERATION : glEndRasterCHROMIUM: EndRasterCHROMIUM without BeginRasterCHROMIUM

Bellow some errors from Event View

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name="Windows Error Reporting" /> 
  <EventID Qualifiers="0">1001</EventID> 
  <Version>0</Version> 
  <Level>4</Level> 
  <Task>0</Task> 
  <Opcode>0</Opcode> 
  <Keywords>0x80000000000000</Keywords> 
  <TimeCreated SystemTime="2023-07-16T00:13:51.4300362Z" /> 
  <EventRecordID>159297</EventRecordID> 
  <Correlation /> 
  <Execution ProcessID="0" ThreadID="0" /> 
  <Channel>Application</Channel> 
  <Computer>DESKTOP-L94D3FG</Computer> 
  <Security /> 
  </System>
- <EventData>
  <Data>1344290089951305044</Data> 
  <Data>1</Data> 
  <Data>APPCRASH</Data> 
  <Data>NĂŁo disponĂ­vel</Data> 
  <Data>0</Data> 
  <Data>CefSharp.BrowserSubprocess.exe</Data> 
  <Data>111.2.20.0</Data> 
  <Data>d052c3b4</Data> 
  <Data>ntdll.dll</Data> 
  <Data>10.0.19041.3086</Data> 
  <Data>fab6a536</Data> 
  <Data>c00000fd</Data> 
  <Data>00087eba</Data> 
  <Data /> 
  <Data /> 
  <Data>\\?\C:\Users\User\AppData\Local\Temp\WER84A0.tmp.WERDataCollectionStatus.txt \\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER9490.tmp.WERInternalMetadata.xml \\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER94FE.tmp.xml \\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER9514.tmp.txt \\?\C:\Users\User\AppData\Local\Temp\WER95BA.tmp.appcompat.txt</Data> 
  <Data>\\?\C:\ProgramData\Microsoft\Windows\WER\ReportArchive\AppCrash_CefSharp.Browser_fdb18b4665f8af3e8f1aeb42bd61eda296463_a07c8eb1_2306e54d-58f4-41d7-8da1-27c47f9b35a5</Data> 
  <Data /> 
  <Data>0</Data> 
  <Data>a561a6a6-a76a-4779-987a-723688b3b367</Data> 
  <Data>268435552</Data> 
  <Data>b4d3f9962684fa19a2a7e0b6e6a01d54</Data> 
  <Data>0</Data> 
  </EventData>
  </Event>
- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name=".NET Runtime" /> 
  <EventID Qualifiers="0">1026</EventID> 
  <Version>0</Version> 
  <Level>2</Level> 
  <Task>0</Task> 
  <Opcode>0</Opcode> 
  <Keywords>0x80000000000000</Keywords> 
  <TimeCreated SystemTime="2023-07-15T20:17:37.1423992Z" /> 
  <EventRecordID>159282</EventRecordID> 
  <Correlation /> 
  <Execution ProcessID="0" ThreadID="0" /> 
  <Channel>Application</Channel> 
  <Computer>DESKTOP-L94D3FG</Computer> 
  <Security /> 
  </System>
- <EventData>
  <Data>Aplicativo: CefSharp.BrowserSubprocess.exe Versão do Framework: v4.0.30319 Descrição: O processo foi terminado devido a uma exceção sem tratamento. Informações da Exceção: System.IO.FileLoadException em CefSharp.Internals.CommandLineArgsParser.GetArgumentValue(System.Collections.Generic.IEnumerable`1<System.String>, System.String) em CefSharp.BrowserSubprocess.BrowserSubprocessExecutable.Main(System.Collections.Generic.IEnumerable`1<System.String>, CefSharp.RenderProcess.IRenderProcessHandler) em CefSharp.BrowserSubprocess.Program.Main(System.String[])</Data> 
  </EventData>
  </Event>

But theres a lot of errors…

i came back today, and i will start testing the R310

1 Like

Dan, im sorry for that, but how do i switch this setting? I have to edit the config.xml file?