|
From: | Josh Freeman |
Subject: | Re: ANN: PikoPixel pixel-art editor |
Date: | Mon, 12 Oct 2015 06:15:41 -0400 |
Hi David,Thanks for the info! Hadn't seen this issue on the Debian-distros I tested - on those, the +load methods are called in the same order as the source-file listing in the GNUmakefile (all the PPGNUstepGlue* files are at the end of the list, after the file that defines ppPerformSelectorFromNewStackFrame:).
An updated version of the PikoPixel sources is now available on the website: 1.0 BETA5+2015-10-12
Changes include:- Removed all object messaging from +load methods, which should hopefully fix the segfault you're seeing and also prevent static- linking issues
- Fewer patches, thanks to recent fixes in the GNUstep trunk by Fred Kiefer and Richard Frith-Macdonald
- Requires a newer version of the GNUstep development environment: Oct. 11, 2015 or later
- Now builds & runs with the GCC runtime (so far, only tested with GCC 4.9)
The download link for the sources is at the bottom of the webpage (not the green "Download" arrow, which downloads the Mac binary):
http://twilightedge.com/mac/pikopixel/ Please let me know if the update fixes your startup issue. Thanks, Josh On Oct 10, 2015, at 6:10 AM, David Chisnall wrote:
Having now tried testing PikoPixel, I discover that it segfaults on startup. It turns out that this is because it relies on undefined behaviour, which may or may not work depending on linker behaviour.1. The PPGNUstepGlue_TitleablePopUpButton category on NSObject has a +load method2. This method calls ppPerformSelectorFromNewStackFrame.3. The ppPerformSelectorFromNewStackFrame method is added in the PPUtilities category on NSObject4. The order in which these categories will be loaded is undefined behaviour.5. If the second category is applied after the first, then we die with an invalid method exception.The slightly ironic thing is that the ppPerformSelectorFromNewStackFrame method itself seems to be intended as a work-around for this precise ordering issue (it allows the method swizzling to happen after all of the categories have loaded).The fix would be simple: Turn ppPerformSelectorFromNewStackFrame into a function that takes an explicit NSObject parameter.There are some other things that are potential issues (e.g. using NSArray from +load in a category on NSObject), but they’re likely to only show up in static linking.DavidOn 23 Sep 2015, at 06:54, Josh Freeman <gnustep_lists@twilightedge.com > wrote:Hi Xavier,Thanks for your interest in PikoPixel! Hope your installation went OK and your nephews enjoyed using it!Unfortunately, the full documentation still isn't written, so I don't have a list of the complete set of features. Most of the important ones were shown in the video (https://www.youtube.com/watch?v=K3KYYLK0ZC0 ), and almost all of the rest can be found through the main menu & submenus.One of the more useful and unique features are the popup panels (shown in the video at 2:08): By pressing an easy-to-reach hotkey along the lower corners of the keyboard (on either side, to accommodate right- and left-handed users), a popup panel that controls tools, colors, layer controls, or navigation appears under the current mouse location. This speeds up the drawing process because the user doesn't have to spend time navigating the mouse to an external panel off the side of the document window (& then back).For best results with popup panels, I recommend setting the correct keyboard language-locale in PikoPixel's hotkey settings (on Mac, it's set automatically, but on GNUstep, it has to be done manually - this is a Cocoa limitation, not a GS one, as there's no Cocoa API for reading the keyboard locale; the Mac version accesses it using the Carbon framework): From the main menu, select Info > Hotkey Settings, and choose your keyboard's locale from the popup menu in the bottom left of the Hotkey Settings window, then click the "Load Defaults For:" button immediately to its left, & click "OK" to save. (This is due to the different key layouts in different locales - for example, on US-locale keyboards, the keys at the lower left are Z, X, C; on French-locale keyboards, the keys are W, X, C - there's also further differences in French-Canadian & French- Swiss locales).One of the interesting features not shown in the video is the "Blink Layers" hotkey ('B' on most keyboard locales): When you hold down the hotkey, it temporarily hides your image, displaying only the canvas background. This is useful when tracing a higher- resolution photo (you can set a photo to be the canvas background in 'Background Settings', found in the 'Canvas' menu), because quickly switching in-place between your drawing & the reference photo makes it easy to find the parts where your drawing doesn't quite match. Here are some photo-tracings made with PikoPixel (Mac) that used this technique: https://instagram.com/pikopixeleditor/ (the blurry tv-scanlines effect was from post-processing in another image-editor)Regarding similar software, there's several pixel-art editors listed here: http://www.slant.co/topics/1547/~what-are-the-best-pixel-art-sprite- editorsI wrote PikoPixel because it was the pixel-art editor I wanted to use, and hopefully it's something others find useful too. Thanks to the GNUstep frameworks and everyone who's volunteered their time working on them, PP can reach a wider audience beyond Mac; I hope your article can also discuss GNUstep, because my Mac pixel-editor now compiles & runs on a $40 Raspberry Pi 2, which is quite amazing!Please let me know if you have other questions. (And I'd be happy to take this off-list if this was too off-topic for discuss-gnustep).Cheers, Josh On Sep 20, 2015, at 3:24 PM, Xavier Brochard wrote:Hi Thank you for this software!Your demo video is so good and convincing that my two nephew (10 yearsold) asked me to install it ! I would like to write a short paper about PikoPixel on linuxfr.org(slashdot for french speaking people). Do you have a list of features or should I extract it from the video ? Do you know a similar software ?What were your motivations for writing it ? Xavier Brochard Le Fri, 18 Sep 2015 15:57:08 -0400, Josh Freeman <gnustep_lists@twilightedge.com> a écrit :PikoPixel is a free Mac OS X pixel-art editor that's currently in beta for its initial 1.0 release. The latest beta version, 1.0 BETA5, is the first source-code release (AGPL v3), and the first version that also runs on GNUstep. PikoPixel GNUstep binaries aren't available yet (haven't gotten around to figuring out GS standalone application packaging), so for the moment, PikoPixel must be built from source. Requirements for compiling PikoPixel are a recent version of the GNUstep development environment (June 2015 or later) and thelibobjc2 runtime. Also, PP's only been tested so far under Clang, andon Debian- based Linux distros (Ubuntu & Mint), so there may be issues with other configurations. PikoPixel's source code archive is linked at the bottom of the webpage (not the green "Download" arrow, which downloads the Mac-only binary): http://twilightedge.com/mac/pikopixel/ Please send questions, comments, or issues to pikopixel (at) twilightedge (dot) com. Cheers, Josh Freeman Twilight Edge Software http://twilightedge.com_______________________________________________ Discuss-gnustep mailing list Discuss-gnustep@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnustep-- This email complies with ISO 3103
[Prev in Thread] | Current Thread | [Next in Thread] |