mono / libgdiplus

C-based implementation of the GDI+ API
http://www.mono-project.com/
MIT License
333 stars 171 forks source link

libgdiplus bundled with official mono release is missing X11 support on Mac #719

Open QianNangong opened 2 years ago

QianNangong commented 2 years ago

GdipCreateFromXDrawable_linux is only available when both cario and libgdiplus are built with X11 support, however it is not included in the latest package.

keqing@cute Debug % DYLD_LIBRARY_PATH=/usr/X11/lib MONO_MWF_MAC_FORCE_X11=1 mono pq.exe
Gtk not found (missing LD_LIBRARY_PATH to libgtk-x11-2.0.so.0?), using built-in colorscheme

Unhandled Exception:
System.EntryPointNotFoundException: GdipCreateFromXDrawable_linux assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) System.Drawing.GDIPlus.GdipCreateFromXDrawable_linux(intptr,intptr,intptr&)
  at System.Drawing.Graphics.FromXDrawable (System.IntPtr drawable, System.IntPtr display) [0x00000] in <398ba7f369174c94887f7efecb847cb2>:0 
  at System.Drawing.Graphics.FromHwnd (System.IntPtr hwnd) [0x000ef] in <398ba7f369174c94887f7efecb847cb2>:0 
  at System.Windows.Forms.XplatUIX11.GetAutoScaleSize (System.Drawing.Font font) [0x00010] in <0c88fb805ea044c89bd73615d815986d>:0 
  at System.Windows.Forms.XplatUI.GetAutoScaleSize (System.Drawing.Font font) [0x00000] in <0c88fb805ea044c89bd73615d815986d>:0 
  at System.Windows.Forms.Form.GetAutoScaleSize (System.Drawing.Font font) [0x00000] in <0c88fb805ea044c89bd73615d815986d>:0 
  at System.Windows.Forms.Form..ctor () [0x0001e] in <0c88fb805ea044c89bd73615d815986d>:0 
  at pq.MainForm..ctor () [0x00000] in <b521501ff8b44fcd927157eff10ce06a>:0 
  at (wrapper remoting-invoke-with-check) pq.MainForm..ctor()
  at pq.MainClass.Main (System.String[] args) [0x00001] in <b521501ff8b44fcd927157eff10ce06a>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.EntryPointNotFoundException: GdipCreateFromXDrawable_linux assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) System.Drawing.GDIPlus.GdipCreateFromXDrawable_linux(intptr,intptr,intptr&)
  at System.Drawing.Graphics.FromXDrawable (System.IntPtr drawable, System.IntPtr display) [0x00000] in <398ba7f369174c94887f7efecb847cb2>:0 
  at System.Drawing.Graphics.FromHwnd (System.IntPtr hwnd) [0x000ef] in <398ba7f369174c94887f7efecb847cb2>:0 
  at System.Windows.Forms.XplatUIX11.GetAutoScaleSize (System.Drawing.Font font) [0x00010] in <0c88fb805ea044c89bd73615d815986d>:0 
  at System.Windows.Forms.XplatUI.GetAutoScaleSize (System.Drawing.Font font) [0x00000] in <0c88fb805ea044c89bd73615d815986d>:0 
  at System.Windows.Forms.Form.GetAutoScaleSize (System.Drawing.Font font) [0x00000] in <0c88fb805ea044c89bd73615d815986d>:0 
  at System.Windows.Forms.Form..ctor () [0x0001e] in <0c88fb805ea044c89bd73615d815986d>:0 
  at pq.MainForm..ctor () [0x00000] in <b521501ff8b44fcd927157eff10ce06a>:0 
  at (wrapper remoting-invoke-with-check) pq.MainForm..ctor()
  at pq.MainClass.Main (System.String[] args) [0x00001] in <b521501ff8b44fcd927157eff10ce06a>:0 
filipnavara commented 2 years ago

That is intentional. Apple no longer supports the X11 server and the libraries shipped with it are notoriously outdated. Most importantly it gets problematic because it ships its own version of Cairo that collides with any newer version installed by Homebrew.