Inkscape native Mac OS X build & look improvements
Hello,
I've recently switched for good to MacOSX (after several years of work with Windows). I'm user and fan Inkscape. On Windows there was pretty well working native build, while it is missing on MacOSX (X11 build is pretty slow and not handy) So I've decided to make it myself and now share my experience with you.
Attached the screenshot of my running native OSX (Leopard) version of Inkscape (no, it's not a fake ! ;P)
I've used the recipe from http://wiki.inkscape.org/wiki/index.php/CompilingMacOsX with MacPorts.
Here are my changes to original MacPorts recipe:
1) I've updated to latest GTK+2 using: (you need to do the same or Inkscape will be crashing every few seconds) port edit gtk2 version 2.12.5 checksums md5 588c7fb3d9ebadf4f5a1ab4c534e4db5 port install gtk2 +quartz 2) I've downgraded boehmgc to 6.8 (latest 7.0 causes Inkscape to hang (never ending loop) on startup) port edit boehmgc version 6.8 distname ${d_name}${version} checksums sha1 6d5def5ba5d29292ba9c76f04df3ec06d3ab3278 3) Applied my own-cooked patch Inkscape_OSX_native_menu_and_toolbars.patch (attached)
* src/widgets/toolbox.cpp: removes tb_s, tb_e spacers from the toolbars to they DON'T have ugly underlines (who did invent this anyway, this produces ugly look in most GTK themes where toolbars are 2x inset in the GUI, I believe this should be removed anyway in all builds (platforms)) * src/ige-mac-menu.[c/h]: sources for native Carbon Mac top menu wrapper instead of having the menu inside the window (taken from GIMP sources) * src/interface.cpp: use ige_mac_menu_set_menu_bar on native GTK (Quartz) for menu and return NULL so no menu is displayed in the Window itself * configure.ac: add Carbon checking and libs define required ige-mac- menu * src/Makefile_insert: add Carbon libs and ige-mac-menu sources * removes packaging/macosx/Resources/themes/Clearlooks-Quicksilver- OSX: we should take Leopardish-normal theme instead from: http://www.gnome-look.org/content/show.php/Leopardish?content=65299 which is far more adequate for GTK looking like OSX 4) then normally built with packaging/macosx/osx-build.sh a c b i p 5) fixed Inkscape.app so it is displayed as single Launch bar icon named "Inkscape" by: * removing Contents/Resources/getdisplay.sh & Contents/Resources/ inkscape (we don't need those in native !) * renaming Contents/Resources/inkscape-bin to Contents/Resources/ Inkscape * replacing Contents/MacOS/Inkscape with simple shell script that sets cwd to Inkscape.app and runs Contents/Resources/bin/Inkscape:
#!/bin/sh PRG="$0" while [ -h "$PRG" ] ; do ls=`ls -ld "$PRG"` link=`expr "$ls" : '.*-> (.*)$'` if expr "$link" : '/.*' > /dev/null; then PRG="$link" else PRG=`dirname "$PRG"`"/$link" fi done DIR="`dirname $PRG`" cd $DIR cd ../.. exec Contents/Resources/bin/Inkscape
6) Changed GTK theme (with gtk-chtheme) to Leopardish and font "Geneva 11pt" - MacOSX default
And the result is Inkscape looking & working like native OSX (Leopard) application: * native look with GTK Leopardish-normal theme * native menus with ige-mac-menu-bar * native Name and application in Launch bar
Yet I found some problems while doing those changes: * ige-mac-menu doesn't map properly keyboard shortcuts as it should (as it does with GIMP), those should be mapped with Ctrl<->Cmd transition, while they're not mapped at all with Inkscape * ige-mac-menu trick with returning NULL to avoid display the 2nd menu in the window makes probably some problem with updating the menu in the app in later stages so things like recent files don't show up in the app menu anymore * ige-mac-menu should be extended with Inkscape (bold) menu entries for preferences and application closure (I hope Mac users will know what I mean) * my tricks with Inkscape.app are as dirty as old tricks for X11 version, I believe that proper solution should anyway place final native binary of Inkscape in Contents/Resources/MacOS and map properly path in Contents/Resources for lib, etc, share,.. and so on without intermediate shell scripts (like mine) * toolbox should be set to small icons by default (SVN is set to big icons), unless the Inkscape window will forced to set its minimum height of toolbox height, which results in Inkscape not being resizable vertically on my MacBook at all ! (being too big) * Leopardish-normal theme and "Geneva 11pt" should be set by default in Inkscape.app somehow if no GTK settings (or other GTK installation) are present * ... and finally there's some problem with SVG View repaint, everytime it repaints (when opening or activating Inkscape window) the view is afterward erased by default (grayish) color (???) and then when I move the mouse over the view (which is erased with solid color), the repaints 2nd time, this time the proper output stays on screen. I believe it is problem of Inkscape not GTK+ cos it doesn't happen in any other place but just SVG (Document) view.
Anyway my build works pretty well, there're some minor annoyances in some windows (like File open window) however it seems to be pretty stable (doesn't crash) and responsible.
I hope it will help you (Developers) to make some time native OSX official builds... maybe 0.46 !?
Best regards,
I tested your modifications
On 2008-January-10 , at 13:09 , Adam Strzelecki wrote: [...]
- I've updated to latest GTK+2 using: (you need to do the same or
Inkscape will be crashing every few seconds) port edit gtk2 version 2.12.5 checksums md5 588c7fb3d9ebadf4f5a1ab4c534e4db5 port install gtk2 +quartz 2) I've downgraded boehmgc to 6.8 (latest 7.0 causes Inkscape to hang (never ending loop) on startup) port edit boehmgc version 6.8 distname ${d_name}${version} checksums sha1 6d5def5ba5d29292ba9c76f04df3ec06d3ab3278
I made new portfiles for those and installed these versions.
- Applied my own-cooked patch
Inkscape_OSX_native_menu_and_toolbars.patch (attached) <Inkscape_OSX_native_menu_and_toolbars.patch>
- src/widgets/toolbox.cpp: removes tb_s, tb_e spacers from the
toolbars to they DON'T have ugly underlines (who did invent this anyway, this produces ugly look in most GTK themes where toolbars are 2x inset in the GUI, I believe this should be removed anyway in all builds (platforms))
I left this away from the patch
- src/ige-mac-menu.[c/h]: sources for native Carbon Mac top menu
wrapper instead of having the menu inside the window (taken from GIMP sources)
- src/interface.cpp: use ige_mac_menu_set_menu_bar on native GTK
(Quartz) for menu and return NULL so no menu is displayed in the Window itself
- configure.ac: add Carbon checking and libs define required ige-
mac-menu
- src/Makefile_insert: add Carbon libs and ige-mac-menu sources
I added this (it's in SVN right now actually)
- then normally built with packaging/macosx/osx-build.sh a c b i p
- fixed Inkscape.app so it is displayed as single Launch bar icon
named "Inkscape" by:
- removing Contents/Resources/getdisplay.sh & Contents/Resources/
inkscape (we don't need those in native !)
- renaming Contents/Resources/inkscape-bin to Contents/Resources/
Inkscape
- replacing Contents/MacOS/Inkscape with simple shell script that
sets cwd to Inkscape.app and runs Contents/Resources/bin/Inkscape:
#!/bin/sh PRG="$0" while [ -h "$PRG" ] ; do ls=`ls -ld "$PRG"` link=`expr "$ls" : '.*-> (.*)$'` if expr "$link" : '/.*' > /dev/null; then PRG="$link" else PRG=`dirname "$PRG"`"/$link" fi done DIR="`dirname $PRG`" cd $DIR cd ../.. exec Contents/Resources/bin/Inkscape
I also did this. Yet Inkscape native still crashes on startup with the crash log below. did this occur to you also? on what platform and os version are you by the way?
Process: Inkscape [84419]
[snip]
Exception Type: EXC_BAD_ACCESS (SIGBUS) Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000020 Crashed Thread: 0
Thread 0 Crashed: 0 libobjc.A.dylib 0x954156e8 objc_msgSend + 24 1 com.apple.CoreFoundation 0x915509e2 __CFRunLoopDoObservers + 466 2 com.apple.CoreFoundation 0x91551d45 CFRunLoopRunSpecific + 853 3 com.apple.CoreFoundation 0x91552d38 CFRunLoopRunInMode + 88 4 com.apple.HIToolbox 0x94f9d8a4 RunCurrentEventLoopInMode + 283 5 com.apple.HIToolbox 0x94f9d5f6 ReceiveNextEventCommon + 175 6 com.apple.HIToolbox 0x94f9d531 BlockUntilNextEventMatchingListInMode + 106 7 com.apple.AppKit 0x95f57d5b _DPSNextEvent + 657 8 com.apple.AppKit 0x95f576a0 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128 9 libgdk-quartz-2.0.0.dylib 0x012cb2b8 gdk_event_prepare + 120 10 libglib-2.0.0.dylib 0x0172795b g_main_context_prepare + 587 11 libglib-2.0.0.dylib 0x0172809f g_main_context_iterate + 191 12 libglib-2.0.0.dylib 0x017287f7 g_main_loop_run + 455 13 libgtk-quartz-2.0.0.dylib 0x00fad1c1 gtk_main + 177 14 libgtkmm-2.4.1.dylib 0x00ad743b Gtk::Main::run() + 27 15 Inkscape 0x00003ebf sp_main_gui(int, char const**) + 511 16 Inkscape 0x0019e572 Inkscape::NSApplication::Application::run() + 178 17 Inkscape 0x00002cfe main + 206 18 Inkscape 0x00002986 start + 54
Thread 1: 0 libSystem.B.dylib 0x95b1992e semaphore_wait_signal_trap + 10 1 libSystem.B.dylib 0x95b4b1e6 _pthread_cond_wait + 1267 2 libSystem.B.dylib 0x95b90c4b pthread_cond_wait + 48 3 libgc.1.dylib 0x01965f25 GC_wait_marker + 37 4 libgc.1.dylib 0x0195ec3d GC_help_marker + 93 5 libgc.1.dylib 0x01964f66 GC_mark_thread + 70 6 libSystem.B.dylib 0x95b4a075 _pthread_start + 321 7 libSystem.B.dylib 0x95b49f32 thread_start + 34
Thread 0 crashed with X86 Thread State (32-bit): eax: 0x17c92ec0 ebx: 0x95f59ba7 ecx: 0x954c7574 edx: 0x00000000 edi: 0x17c93480 esi: 0x17c93480 ebp: 0xbfffe738 esp: 0xbfffe6f8 ss: 0x0000001f efl: 0x00010206 eip: 0x954156e8 cs: 0x00000017 ds: 0x0000001f es: 0x0000001f fs: 0x00000000 gs: 0x00000037 cr2: 0x00000020
Binary Images: [snip]
JiHO --- http://jo.irisson.free.fr/
Hi Jo,
Sorry it took me a while to write you a proper answer, I've started writing this mail this morning.. and now sending it finally in the night. Too many things to do in meantime.
could you add this to the wiki please. that's what the wiki is for in the first place actually! you probably need to register since there were some spam problems before registration was required (grrrr spammers).
No problem, I'll try to fetch Wiki with those infos this weekend. GTK is under heavy OSX changes lately and MacPorts don't really follow recent GTK releases which fix lots of bugs relative to Mac Quartz version.
Well, I think that's a matter of taste. I tested Leopardish and other themes before using the Clearlooks based one and chose Clearlooks because:
- the engine is more efficient
Yeah, Leopardish is HEAVILY pixmap based. I just like Leopardish coz Inkscape really looks like native app, while any discussion about tastes is endless usually, so let's leave the Inkscape with the Clearlooks (as it is) and focus more on making Inkscape running agile on OSX.
- I really dislike the glob-pseudo-aqua-like buttons this theme uses
on the toolbar
Isn't this because toolbox is NOT a GTK toolbar? or maybe it is opposite ;P, notice that top toolbars look slightly different.
- the tabs look approximative too
overall this (and this kind of) themes are usually taking bitmaps from OS X but assembling them too poorly to make the themes look convincing. So I preferred to take a completely different route and choose a theme that look professional and was not too alien on OS X. Of course this is open to change if enough people prefer a different theme, but overall, there's no Leopard-like (or more generally OS X- like) theme which satisfies me currently. I really think that the only way we'll get something satisfying is by writing a completely new engine.
Well, the best way it would be to have the engine that will render the parts of the Aqua interface natively, but it is now just a wish, nothing more ;) Still I think most important for the OSX version is that it is robust, so probably lighter theme is better.
- Changed GTK theme (with gtk-chtheme) to Leopardish and font
"Geneva 11pt" - MacOSX default
The theme was previously set by the startup script. I guess we'll probably keep it in the end. We'll see. The font OS X uses is Lucida Grande 12 pt by the way.
Ahh.. you got me, I'm pretty fresh guy to OSX.. before working most on Windows, you're pretty right it is Lucida. I just read on some "lucky me" Google page that's Geneva, but it was wrong.
- Applied my own-cooked patch
Inkscape_OSX_native_menu_and_toolbars.patch (attached) <Inkscape_OSX_native_menu_and_toolbars.patch>
- src/widgets/toolbox.cpp: removes tb_s, tb_e spacers from the
toolbars to they DON'T have ugly underlines (who did invent this anyway, this produces ugly look in most GTK themes where toolbars are 2x inset in the GUI, I believe this should be removed anyway in all builds (platforms))
I left this away from the patch
Yet it was commited by Bulia Byak (thanks!)
- src/ige-mac-menu.[c/h]: sources for native Carbon Mac top menu
wrapper instead of having the menu inside the window (taken from GIMP sources)
- src/interface.cpp: use ige_mac_menu_set_menu_bar on native GTK
(Quartz) for menu and return NULL so no menu is displayed in the Window itself
- configure.ac: add Carbon checking and libs define required ige-
mac-menu
- src/Makefile_insert: add Carbon libs and ige-mac-menu sources
I added this (it's in SVN right now actually)
Great!
I also did this. Yet Inkscape native still crashes on startup with the crash log below. did this occur to you also? on what platform and os version are you by the way?
I'm at Leopard 10.5.1 MacBook Pro Intel C2D.
Hmm... that's pretty bizzare it did crash for you. Are you sure gtk2 got properly updated with MacPorts, maybe Inkscape is still somehow referring to old libraries? Well frankly I've also did update glib2 to 2.15.1 (port edit glib2 -> checksums md5 b3a2ca18e618927d03d39000f2155958), so this may be the clue, while I haven't thought it could be the reson of crashes as it is pretty platform independent and I didn't catch any problems with glib2. Still your crash seems to uccur at gtk2 (quartz):
9 libgdk-quartz-2.0.0.dylib 0x012cb2b8 gdk_event_prepare + 120
OK. So that's probably because of a difference in the keyboard shortcut system between Gimp and Inkscape. I'll commit the ige-mac- menu thing and it would be great if someone knowledgeable could look into this.
I'll try to find out why it doesn't take up the the shortcuts, more interesting is how to make this menu to get updates without nasty trick of returning NULL to the rest of interface ;> Also I'll try in free time to hook bold Inkscape menu with preferences and quit links.
- my tricks with Inkscape.app are as dirty as old tricks for X11
version, I believe that proper solution should anyway place final native binary of Inkscape in Contents/Resources/MacOS and map properly path in Contents/Resources for lib, etc, share,.. and so on without intermediate shell scripts (like mine)
Probably yes. Environment variables can be set in Info.plist if we keep the platypus wrapper. Otherwise there are some python utilities to wrap python applications in an app bundle but I don't know how "hackish" they are.
That's good hint, maybe it can be used to place Inkscape binary directly into Contents/MacOS without any intermediate script.
argh this bug has be present for a while. does it look like the video there: http://jo.irisson.free.fr/?p=34 if this is like this, it is indeed GTK bug and should be investigated jointly from Inkscape and GTK sides.
Well it's not choking as much as on this video, actually it's not choking at all except the moment I resize or reactivate inscape window -> I've recorded something that shows the problem: http://pingu.ii.uj.edu.pl/~ono/download/Inkscape-bad-Quartz-repaint.mov
You could start by putting a zip/dmg of this build somewhere on the net and we'll post it with the devel builds. then it was indeed planned to make a native build available as and "experimental test" for 0.46. Your work makes this much more likely.
I'll try to do so this weekend.
Thanks a lot and please store your knowledge on the wiki.
Sure.
Regards & good night, (At least for all Europeans ;P)
Hi,
Inkscape native OSX experimental build available for testing: http://pingu.ii.uj.edu.pl/~ono/download/Inkscape-NativeOSX-svn17029.dmg
I'll submit soon my changes (patches): * no intermediate scripts, Inkscape launched directly from binary at Contents/MacOS * libraries inside Contents/Frameworks * Inkscape & libraries linked with @executable_path (no need for DYDL_LIBRARY_PATH) * Inkscape changes working directory to bundle path on startup (to satisfy resources loading with relative paths)
Now please test my build & tell me what you think.
Sorry I left the build with Leopardish theme, just because your ClearLooks required startup script (and now I run the binary directly) that was doing color fetch (sync) (which anyway didn't work on Leopard), I'll try to sort it out later, now theme is chosen with Info.plist: <key>LSEnvironment</key> <dict> <key>GTK2_RC_FILES</key> <string>../Resources/themes/Leopardish-normal/gtk-2.0/gtkrc</string> </dict>
Ahh & I know what was the reason of your crashes... Inkscape icons.svg file is taken from Contents/Resources/icons, but the path is hardcoded into Inkscape. When none of those icons is available at this relative path, Inkscape was crashing like that. Usually when it was NOT started to CWD set to bundle path. As I said I've made Inkscape to change its CWD to bundle path, so it should solve the problems,
I gonna post patches tomorrow.
Yet Inkscape native still crashes on startup with the crash log below. did this occur to you also? on what platform and os version are you by the way?
Process: Inkscape [84419]
[snip]
Exception Type: EXC_BAD_ACCESS (SIGBUS) Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000020 Crashed Thread: 0
Thread 0 Crashed: 0 libobjc.A.dylib 0x954156e8 objc_msgSend + 24 1 com.apple.CoreFoundation 0x915509e2 __CFRunLoopDoObservers
- 466
2 com.apple.CoreFoundation 0x91551d45 CFRunLoopRunSpecific + 853 3 com.apple.CoreFoundation 0x91552d38 CFRunLoopRunInMode + 88 4 com.apple.HIToolbox 0x94f9d8a4 RunCurrentEventLoopInMode + 283 5 com.apple.HIToolbox 0x94f9d5f6 ReceiveNextEventCommon
- 175
6 com.apple.HIToolbox 0x94f9d531 BlockUntilNextEventMatchingListInMode + 106 7 com.apple.AppKit 0x95f57d5b _DPSNextEvent + 657 8 com.apple.AppKit 0x95f576a0 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128 9 libgdk-quartz-2.0.0.dylib 0x012cb2b8 gdk_event_prepare + 120 10 libglib-2.0.0.dylib 0x0172795b g_main_context_prepare
- 587
11 libglib-2.0.0.dylib 0x0172809f g_main_context_iterate
- 191
12 libglib-2.0.0.dylib 0x017287f7 g_main_loop_run + 455 13 libgtk-quartz-2.0.0.dylib 0x00fad1c1 gtk_main + 177 (...)
Gnite,
On 2008-January-14 , at 02:28 , Adam Strzelecki wrote:
Inkscape native OSX experimental build available for testing: http://pingu.ii.uj.edu.pl/~ono/download/Inkscape-NativeOSX- svn17029.dmg
got it. unfortunately some things are not quite right: - The executable is still linked to some libraries in /opt/local. See the console messages at the end of my e-mail. - The display is really slow compared to the X11 version (particularly noticeable in the calligraphy tool for example). My guess is that it is GTK related but it can also be something on our end.
I'll submit soon my changes (patches):
- no intermediate scripts, Inkscape launched directly from binary at
Contents/MacOS
- libraries inside Contents/Frameworks
- Inkscape & libraries linked with @executable_path (no need for
DYDL_LIBRARY_PATH)
- Inkscape changes working directory to bundle path on startup (to
satisfy resources loading with relative paths)
For these changes, I would suggest to: - either create a completely new bundling script (like osx-app- native.sh) - or add and option to osx-app to do the native things In both cases, it really should not disturb current behavior. We're near release, there are very few people working on OS X (and that's great you're a new one!) so we can't afford breaking things right now.
Now please test my build & tell me what you think.
Sorry I left the build with Leopardish theme, just because your ClearLooks required startup script (and now I run the binary directly) that was doing color fetch (sync) (which anyway didn't work on Leopard)
That's strange, It works perfectly for me (not that I change colors everyday but I tested it quite a bit).
, I'll try to sort it out later, now theme is chosen with Info.plist: <key>LSEnvironment</key>
<dict> <key>GTK2_RC_FILES</key> <string>../Resources/themes/Leopardish-normal/gtk-2.0/gtkrc</string> </dict>
No problem. We'll work things out in the end to support other themes and respect the users settings in .gtkrc-2.0
Ahh & I know what was the reason of your crashes... Inkscape icons.svg file is taken from Contents/Resources/icons, but the path is hardcoded into Inkscape. When none of those icons is available at this relative path, Inkscape was crashing like that. Usually when it was NOT started to CWD set to bundle path. As I said I've made Inkscape to change its CWD to bundle path, so it should solve the problems,
Yes apparently there was a problem with some icons. Now even my build works. It suffers from the same problem your build has however. It does not give all the warnings about missing libraries but this is not suprising since it finds them on my system. Could you please test it and report if it works on yours: http://inkscape.modevia.com/macosx-snap/Inkscape-17015-i386-native_expriment... (PS: my native gtk tree is in a non-standard place so it should fail on your system is the app bundle is misconfigured)
I gonna post patches tomorrow.
Depending on how heavy the work is, I'll just ask that you have SVN access. As long as you restrict your commits to packaging/macosx there should be no problem (check your diffs! ;) ). If you plan to change other things, please ask on the list beforehand. Changes are particularly sensible right now.
Thanks again for your hard work. I don't have much free time right now but in two months or so I'll be freer and, with your help, we'll add world class support for OS X in Inkscape. I look forward to this.
Console.log: Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-WARNING **: dlopen(/opt/local/lib/gtk-2.0/2.10.0/ engines/libpixmap.so, 1): Library not loaded: /opt/local/lib/libcairo. 2.dylib Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Referenced from: /opt/local/lib/gtk-2.0/2.10.0/engines/libpixmap.so Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: Reason: Incompatible library version: libpixmap.so requires version 15.0.0 or later, but libcairo.2.dylib provides version 14.0.0 Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Pango-WARNING **: pango_shape called with bad font, expect ugly output Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Pango-WARNING **: pango_font_get_glyph_extents called with null font argument, expect ugly output Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-CRITICAL **: gtk_widget_show_all: assertion `GTK_IS_WIDGET (widget)' failed Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-CRITICAL **: gtk_box_pack_start: assertion `GTK_IS_WIDGET (child)' failed Jan 14 09:55:16 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Gtk-CRITICAL **: gtk_widget_show_all: assertion `GTK_IS_WIDGET (widget)' failed Jan 14 09:55:18 jiho-ibook [0x0-0x33033].org.inkscape.Inkscape[341]: (Inkscape:341): Pango-WARNING **: pango_cairo_font_get_scaled_font called with bad font, expect ugly output
JiHO --- http://jo.irisson.free.fr/
Hi,
got it. unfortunately some things are not quite right:
- The executable is still linked to some libraries in /opt/local.
See the console messages at the end of my e-mail.
Argh... should be fixable setting good env in Info.plist. I hate those GTK engines laying in the separate lib folder, it would be nicer it is was libgtk-2.10.0-engine-pixmap.dylib or something similar in flat lib structure.
- The display is really slow compared to the X11 version
(particularly noticeable in the calligraphy tool for example). My guess is that it is GTK related but it can also be something on our end.
You're right, it is noticeably slow, but yet if you consider fact Quartz is really hardware optimized, this makes me believe that Inkscape on OSX can run really fast.
For these changes, I would suggest to:
- either create a completely new bundling script (like osx-app-
native.sh)
- or add and option to osx-app to do the native things
In both cases, it really should not disturb current behavior. We're near release, there are very few people working on OS X (and that's great you're a new one!) so we can't afford breaking things right now.
That's pretty clear for me, it's not first project I'm sticking my fingers in :P, so I understand all the patches makes sense it they leave the other platform builds (code) intact (including OSX X11 brand). I'll try to make osx-build.sh and osx-app.sh to have some "native" switch, basically all differences lay actually in osx-app.sh. Also frankly the reason I'm playing with this port is that I want to learn more about internals of OSX and differences between the systems I already know like Windows or Linux :)
That's strange, It works perfectly for me (not that I change colors everyday but I tested it quite a bit).
On my Leopard: $ defaults read "Apple Global Domain" AppleAquaColorVariant 2008-01-14 11:39:44.233 defaults[1163:10b] The domain/default pair of (kCFPreferencesAnyApplication, AppleAquaColorVariant) does not exist
This makes some sync_osx_look.sh variables to be "" and the final gtkrc is invalid, and the result is no ClearLooks at all. There's also one little thing that is not taken into consideration, the path where pre_gtkrc may be not writable to the user at all (if the Inkscape.app was installed by other user or administrator), so then the sync_osx_look.sh won't work at all.
The best way it would be to have a native Aqua engine using some Carbon calls like it is done for Windows, so it will render all UI parts as in native app. I just wonder if Apple is exposing some widget parts rendering functions in Carbon or how they did it in QT.
Yes apparently there was a problem with some icons. Now even my build works. It suffers from the same problem your build has however. It does not give all the warnings about missing libraries but this is not suprising since it finds them on my system. Could you please test it and report if it works on yours: http://inkscape.modevia.com/macosx-snap/Inkscape-17015-i386-native_expriment... (PS: my native gtk tree is in a non-standard place so it should fail on your system is the app bundle is misconfigured)
I gonna test this & tell you the results later today.
Depending on how heavy the work is, I'll just ask that you have SVN access. As long as you restrict your commits to packaging/macosx there should be no problem (check your diffs! ;) ). If you plan to change other things, please ask on the list beforehand. Changes are particularly sensible right now.
I'll try to prepare some good looking patch 1st and post in onto mailing list first, so I would like to be careful not to break anything for upcoming release.
Thanks again for your hard work. I don't have much free time right now but in two months or so I'll be freer and, with your help, we'll add world class support for OS X in Inkscape. I look forward to this.
Yeah, Inkscape is IMHO best open-source vector drawing program, so having a "world class support" for OSX, which is kinda graphic & other artists platform is pretty nice idea.
Cheers,
On 2008-January-14 , at 12:05 , Adam Strzelecki wrote:
[...]
For these changes, I would suggest to:
- either create a completely new bundling script (like osx-app-
native.sh)
- or add and option to osx-app to do the native things
In both cases, it really should not disturb current behavior. We're near release, there are very few people working on OS X (and that's great you're a new one!) so we can't afford breaking things right now.
That's pretty clear for me, it's not first project I'm sticking my fingers in :P, so I understand all the patches makes sense it they leave the other platform builds (code) intact (including OSX X11 brand). I'll try to make osx-build.sh and osx-app.sh to have some "native" switch, basically all differences lay actually in osx-app.sh. Also frankly the reason I'm playing with this port is that I want to learn more about internals of OSX and differences between the systems I already know like Windows or Linux :)
OK, no problem, I just wanted to be prudent ;) Anyhow, I'm glad you chose Inkscape to sharpen your knowledge of OS X.
That's strange, It works perfectly for me (not that I change colors everyday but I tested it quite a bit).
On my Leopard: $ defaults read "Apple Global Domain" AppleAquaColorVariant 2008-01-14 11:39:44.233 defaults[1163:10b] The domain/default pair of (kCFPreferencesAnyApplication, AppleAquaColorVariant) does not exist
This has happened on Tiger systems too. I thought it was a bug but apparently it may be a particularity of my system to have those. Could you: - tell me which locale your system is in - tell me wether you use the default appearance settings (aqua and blue) or if you changed those already (my feeling is that those values may be written only if the user changed them) - send me (privately) the output of defaults read | gzip > defaults.gz and maybe also send me the same thing a second time after changing the settings to graphite and closed system prefs.
This makes some sync_osx_look.sh variables to be "" and the final gtkrc is invalid, and the result is no ClearLooks at all.
I should have set some defaults in the script, in case this can't be read. If, as I feel it, the key does not exists when OS X settings are at their default values (Aqua and blue), then these defaults will be easy to find.
There's also one little thing that is not taken into consideration, the path where pre_gtkrc may be not writable to the user at all (if the Inkscape.app was installed by other user or administrator), so then the sync_osx_look.sh won't work at all.
Indeed. There's a plan to move all this to ~/Library/Application Support/ where it should be. I don't think it is difficult. There is only a little thinking about what needs to be copied to Application Support from the app bundle every time and what needs to be updated only once in a while (release etc.), in order not to lengthen boot time too much. Other than that, the env variables which point to these directories already exist and just need to be set.
The best way it would be to have a native Aqua engine using some Carbon calls like it is done for Windows, so it will render all UI parts as in native app. I just wonder if Apple is exposing some widget parts rendering functions in Carbon or how they did it in QT.
I agree but that's a project well beyond simple GTK theming. My secret hope is that a group of brave themers will do this once the GTK native port is stable and that Gimp (and Inkscape!) use it.Create demand and offer will follow. In addition, this needs to be carefully done since: - previous tries usually gave mixed results (the appearance of QT apps is approximative and I really think that, in this case, it's better to be clearly different than to be only approximatively the same) - Carbon is in decline. we'll see what WWDC will tell us but last year's was really about "let carbon down and move to cocoa".
Yes apparently there was a problem with some icons. Now even my build works. It suffers from the same problem your build has however. It does not give all the warnings about missing libraries but this is not suprising since it finds them on my system. Could you please test it and report if it works on yours: http://inkscape.modevia.com/macosx-snap/Inkscape-17015-i386-native_expriment... (PS: my native gtk tree is in a non-standard place so it should fail on your system is the app bundle is misconfigured)
I gonna test this & tell you the results later today.
Depending on how heavy the work is, I'll just ask that you have SVN access. As long as you restrict your commits to packaging/macosx there should be no problem (check your diffs! ;) ). If you plan to change other things, please ask on the list beforehand. Changes are particularly sensible right now.
I'll try to prepare some good looking patch 1st and post in onto mailing list first, so I would like to be careful not to break anything for upcoming release.
Please post it on Launchpad rather than on the ML. The ML is not really suited for attachments (they need to be reviewed every time etc.)
Thanks again for your hard work. I don't have much free time right now but in two months or so I'll be freer and, with your help, we'll add world class support for OS X in Inkscape. I look forward to this.
Yeah, Inkscape is IMHO best open-source vector drawing program, so having a "world class support" for OSX, which is kinda graphic & other artists platform is pretty nice idea.
Well, let us just do it then ;)
JiHO --- http://jo.irisson.free.fr/
On Mon, 2008-01-14 at 10:17 +0100, jiho wrote:
- The display is really slow compared to the X11 version (particularly
noticeable in the calligraphy tool for example). My guess is that it is GTK related but it can also be something on our end.
I've spent some time looking into this slowness. My understanding of the situation is that the problem arises because OS X (after 10.4) doesn't want to try drawing to the screen faster than the screen's refresh rate. Using the normal drawing area invalidation routines will allow OS X to coalesce the updates and then draw synced to the screen refresh. The way in which at least some of Inkscape's drawing works goes through a path in gtk-quartz that bypasses the "proper" routines and tries to draw faster than the refresh rate. This behavior blocks the current thread until the drawing has occurred, thus slowness. This information can be found on Apple's website in the "Drawing Performance Guidelines" document. And there is some discussion related to it at the Imendio (developers of gtk-quartz) forum.
There is a patch from one of the gtk-quartz developers that tries to address this problem, but I don't think it applies cleanly anymore, and a comment on bugzilla reports that it's in limbo because it led to other problems. I don't know what the other problems are.
Anyhow, I have applied the patch and changed a few other things, and now for the most part, in the brief testing I have done, Inkscape draws at what to me is basically an acceptable rate (on PPC 1.25 GHz G4). I have a rather crude implementation of tablet support and the calligraphy drawing works fine with that as well (though I don't have a tablet with tilt support, only pressure, so I'm not sure how well that works, if at all).
The only real obvious speed issue now is with creating a new object. When sizing the object initally the drawing is quite jerky. But once the object is there the resizing works fine. This is with a somewhat dated SVN version of Inkscape.
One more thing. You can use the program Quartz Debug, included with Apple's Developer Tools, to temporarily turn off beam synchronization, which will speed up the drawing in Inkscape, at the cost of possible image tearing. This is of course not a permanent solution to the problem.
Jonathan
On 2008-January-14 , at 12:18 , Jonathan Dempsey wrote:
On Mon, 2008-01-14 at 10:17 +0100, jiho wrote:
- The display is really slow compared to the X11 version
(particularly noticeable in the calligraphy tool for example). My guess is that it is GTK related but it can also be something on our end.
I've spent some time looking into this slowness. My understanding of the situation is that the problem arises because OS X (after 10.4) doesn't want to try drawing to the screen faster than the screen's refresh rate. Using the normal drawing area invalidation routines will allow OS X to coalesce the updates and then draw synced to the screen refresh. The way in which at least some of Inkscape's drawing works goes through a path in gtk-quartz that bypasses the "proper" routines and tries to draw faster than the refresh rate. This behavior blocks the current thread until the drawing has occurred, thus slowness. This information can be found on Apple's website in the "Drawing Performance Guidelines" document. And there is some discussion related to it at the Imendio (developers of gtk-quartz) forum.
There is a patch from one of the gtk-quartz developers that tries to address this problem, but I don't think it applies cleanly anymore, and a comment on bugzilla reports that it's in limbo because it led to other problems. I don't know what the other problems are.
Anyhow, I have applied the patch and changed a few other things, and now for the most part, in the brief testing I have done, Inkscape draws at what to me is basically an acceptable rate (on PPC 1.25 GHz G4). I have a rather crude implementation of tablet support and the calligraphy drawing works fine with that as well (though I don't have a tablet with tilt support, only pressure, so I'm not sure how well that works, if at all).
The only real obvious speed issue now is with creating a new object. When sizing the object initally the drawing is quite jerky. But once the object is there the resizing works fine. This is with a somewhat dated SVN version of Inkscape.
One more thing. You can use the program Quartz Debug, included with Apple's Developer Tools, to temporarily turn off beam synchronization, which will speed up the drawing in Inkscape, at the cost of possible image tearing. This is of course not a permanent solution to the problem.
It's great to see that you already investigated this in such a level of detail. Indeed using Quartz Debug in the way you mention makes drawing quick enough (at least comparable to X11). So basically this needs to be solved upstream, by GTK, to be done cleanly. If there's anything that can be done on Inkscape's side, please go ahead. Patches for this will probably wait until after the release but there's not harm in starting early.
JiHO --- http://jo.irisson.free.fr/
Jonathan Dempsey wrote:
I have a rather crude implementation of tablet support and the calligraphy drawing works fine with that as well (though I don't have a tablet with tilt support, only pressure, so I'm not sure how well that works, if at all).
That strikes me as something that deserves more than to be mentioned in passing - it's pretty revolutionary - especially if the same approach can be applied to other GTK applications (noteworthy: GIMP, Xournal). I've noticed on imendio's project wishlist page that GTK-quartz could be hooked up to OS X's tablet support directly. Is that what you're working on, or is it something more specific to Inkscape's code?
-Yashka Oreza
Well, as I said, it is a rather crude implementation. And it's not tied to Inkscape code. I haven't tested it with GIMP (I'm still using a PPC system and compiling is no fun) but I did try the lightweight MyPaint program as well, and it works with that. Basically, the problem is that when using the existing methods to discover the capabilities of the tablet device (does it have an eraser, or support tilt?) I'm not getting all the required information. So right now instead of adding input devices at application launch time, I'm adding them as needed when events are processed. This means gtk+ won't know if a tablet device has an eraser until the eraser enters the proximity of the tablet. Obviously this is not ideal. However, the issues really aren't that difficult to address, I've just been spending more time on my Ubuntu system recently and neglecting my OS X one.
Jonathan
On Sat, 2008-02-02 at 12:35 -0800, Yashka Oreza wrote:
Jonathan Dempsey wrote:
I have a rather crude implementation of tablet support and the calligraphy drawing works fine with that as well (though I don't have a tablet with tilt support, only pressure, so I'm not sure how well that works, if at all).
That strikes me as something that deserves more than to be mentioned in passing - it's pretty revolutionary - especially if the same approach can be applied to other GTK applications (noteworthy: GIMP, Xournal). I've noticed on imendio's project wishlist page that GTK-quartz could be hooked up to OS X's tablet support directly. Is that what you're working on, or is it something more specific to Inkscape's code?
-Yashka Oreza
On 2008-01-14, at 10:17, jiho wrote:
http://inkscape.modevia.com/macosx-snap/Inkscape-17015-i386- native_exprimental.dmg
havbe one question: is there any Universal build of that experimental version?
participants (5)
-
Adam Strzelecki
-
Areozol
-
jiho
-
Jonathan Dempsey
-
Yashka Oreza