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 method
2. This method calls ppPerformSelectorFromNewStackFrame.
3. The ppPerformSelectorFromNewStackFrame method is added in the
PPUtilities category on NSObject
4. 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.
David
On 23 Sep 2015, at 06:54, Josh Freeman <[email protected]
> 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-
editors
I 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
years
old) 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 <[email protected]> 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 the
libobjc2 runtime. Also, PP's only been tested so far under Clang,
and
on 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
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnustep
--
This email complies with ISO 3103
_______________________________________________
Discuss-gnustep mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnustep