Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

silent exit on win8.1 strawberry 5.18.2 multi-thread-x64 #2

Closed
davehorner opened this issue Aug 9, 2014 · 3 comments
Closed

silent exit on win8.1 strawberry 5.18.2 multi-thread-x64 #2

davehorner opened this issue Aug 9, 2014 · 3 comments

Comments

@davehorner
Copy link
Contributor

Just wanting to try out AntTweakBar took the code from metacpan and tried to run it;
It runs but silently exits. debug traced output below, maybe the sample code was not meant to run out of the box; I tried defining width and height but I don't think that matters.

SDL seems to work on my system to a point. I do have issues with interactive events in SDL apps. This may be related as SDL::Events is being used in this code. All the SDL samples load and work; but keyboard and mouse events aren't working it seems. ho-hum. something to figure out.

Anyways, thought I'd mention my troubles and see if you have any suggestions.
Cheers.
--dave
http://dave.thehorners.com/tech-talk/programming/73-opengl-notes <-- added a link to your modules here.

D:\working\perl\AntTweakBar>perl -d test.pl
Loading DB routines from perl5db.pl version 1.39_10
main::(test.pl:6): my $width=200;
DB<1> t Trace = on
DB<1> c
main::(test.pl:7): my $height=400;
main::(test.pl:8): AntTweakBar::init(TW_OPENGL);
main::(test.pl:9): AntTweakBar::window_size($width, $height);
main::(test.pl:27): my $bar = AntTweakBar->new(
main::(test.pl:28): "TweakBar & Perl",
main::(test.pl:29): size => '200 400',
main::(test.pl:30): color => '96 216 224'
main::(test.pl:31): );
AntTweakBar::new(C:/strawberry/perl/site/lib/AntTweakBar.pm:178):
178: my ($class, $name, %bar_params) = @;
AntTweakBar::new(C:/strawberry/perl/site/lib/AntTweakBar.pm:179):
179: croak "AntTweakBar name should be specified"
180: unless defined $name;
AntTweakBar::new(C:/strawberry/perl/site/lib/AntTweakBar.pm:181):
181: my $self = {
182: name => $name,
183: bar_ptr => create( $name ),
AntTweakBar::new(C:/strawberry/perl/site/lib/AntTweakBar.pm:185):
185: bless $self => $class;
AntTweakBar::new(C:/strawberry/perl/site/lib/AntTweakBar.pm:186):
186: $self->set_bar_params(%bar_params);
AntTweakBar::set_bar_params(C:/strawberry/perl/site/lib/AntTweakBar.pm:446):
446: my ($self, %params) = @
;
AntTweakBar::set_bar_params(C:/strawberry/perl/site/lib/AntTweakBar.pm:447):
447: while (my ($k, $v) = each(%params)) {
AntTweakBar::set_bar_params(C:/strawberry/perl/site/lib/AntTweakBar.pm:448):
448: set_bar_parameter($self->{bar_ptr}, $k, $v);
AntTweakBar::set_bar_params(C:/strawberry/perl/site/lib/AntTweakBar.pm:448):
448: set_bar_parameter($self->{bar_ptr}, $k, $v);
AntTweakBar::new(C:/strawberry/perl/site/lib/AntTweakBar.pm:187):
187: return $self;
main::(test.pl:32): my $enabled = 0;
main::(test.pl:33): $bar->add_variable(
main::(test.pl:34): mode => 'rw',
main::(test.pl:35): name => "Enabled",
main::(test.pl:36): type => 'bool',
main::(test.pl:37): value => $enabled
main::(test.pl:38): );
AntTweakBar::add_variable(C:/strawberry/perl/site/lib/AntTweakBar.pm:378):
378: my ($self, %args) = @
;
AntTweakBar::add_variable(C:/strawberry/perl/site/lib/AntTweakBar.pm:380):
380: for (qw/mode name type/) {
AntTweakBar::add_variable(C:/strawberry/perl/site/lib/AntTweakBar.pm:381):
381: croak "'$
' is mandatory argument for add_variable"
382: unless exists $args{$
};
AntTweakBar::add_variable(C:/strawberry/perl/site/lib/AntTweakBar.pm:381):
381: croak "'$
' is mandatory argument for add_variable"
382: unless exists $args{$
};
AntTweakBar::add_variable(C:/strawberry/perl/site/lib/AntTweakBar.pm:381):
381: croak "'$
' is mandatory argument for add_variable"
382: unless exists $args{$
};
AntTweakBar::add_variable(C:/strawberry/perl/site/lib/AntTweakBar.pm:385):
385: my $mode = $args{mode };
AntTweakBar::add_variable(C:/strawberry/perl/site/lib/AntTweakBar.pm:386):
386: my $name = $args{name };
AntTweakBar::add_variable(C:/strawberry/perl/site/lib/AntTweakBar.pm:387):
387: my $type = $args{type };
AntTweakBar::add_variable(C:/strawberry/perl/site/lib/AntTweakBar.pm:388):
388: my $value = $args{value };
AntTweakBar::add_variable(C:/strawberry/perl/site/lib/AntTweakBar.pm:389):
389: my $cb_read = $args{cb_read };
AntTweakBar::add_variable(C:/strawberry/perl/site/lib/AntTweakBar.pm:390):
390: my $cb_write = $args{cb_write };
AntTweakBar::add_variable(C:/strawberry/perl/site/lib/AntTweakBar.pm:391):
391: my $definition = $args{definition} // "";
AntTweakBar::add_variable(C:/strawberry/perl/site/lib/AntTweakBar.pm:393):
393: croak "Either value or callbacks should be specified"
394: if ($value && ($cb_read || $cb_write));
AntTweakBar::add_variable(C:/strawberry/perl/site/lib/AntTweakBar.pm:395):
395: croak "cb_read is mandatory when value isn't specied"
396: if (!$value && !$cb_read);
AntTweakBar::add_variable(C:/strawberry/perl/site/lib/AntTweakBar.pm:397):
397: croak "value should be a reference"
398: if ($value && !ref($value));
AntTweakBar::add_variable(C:/strawberry/perl/site/lib/AntTweakBar.pm:399):
399: $type = $type->name if(ref($type) eq 'AntTweakBar::Type');
AntTweakBar::add_variable(C:/strawberry/perl/site/lib/AntTweakBar.pm:400):
400: $definition = _as_definition_string($definition)
401: if ($definition && ref($definition) eq 'HASH');
AntTweakBar::add_variable(C:/strawberry/perl/site/lib/AntTweakBar.pm:403):
403: _add_variable($self->{_bar_ptr}, $mode, $name, $type, $value,
404: $cb_read, $cb_write, $definition);
AntTweakBar::DESTROY(C:/strawberry/perl/site/lib/AntTweakBar.pm:191):
191: my $self = shift;
AntTweakBar::DESTROY(C:/strawberry/perl/site/lib/AntTweakBar.pm:192):
192: _destroy($self->{bar_ptr});
File::Temp::CODE(0x2ee3428)(C:/strawberry/perl/lib/File/Temp.pm:737):
737: local($., $@, $!, $^E, $?);
File::Temp::CODE(0x2ee3428)(C:/strawberry/perl/lib/File/Temp.pm:738):
738: cleanup(at_exit => 1);
File::Temp::cleanup(C:/strawberry/perl/lib/File/Temp.pm:744):
744: my %h = @
;
File::Temp::cleanup(C:/strawberry/perl/lib/File/Temp.pm:745):
745: my $at_exit = delete $h{at_exit};
File::Temp::cleanup(C:/strawberry/perl/lib/File/Temp.pm:746):
746: $at_exit = 0 if not defined $at_exit;
File::Temp::cleanup(C:/strawberry/perl/lib/File/Temp.pm:747):
747: { my @k = sort keys %h; die "unrecognized parameters: @k" if @k }
File::Temp::cleanup(C:/strawberry/perl/lib/File/Temp.pm:747):
747: { my @k = sort keys %h; die "unrecognized parameters: @k" if @k }
File::Temp::cleanup(C:/strawberry/perl/lib/File/Temp.pm:747):
747: { my @k = sort keys %h; die "unrecognized parameters: @k" if @k }
File::Temp::cleanup(C:/strawberry/perl/lib/File/Temp.pm:749):
749: if (!$KEEP_ALL) {
File::Temp::cleanup(C:/strawberry/perl/lib/File/Temp.pm:752):
752: @{ $files_to_unlink{$$} } : () );
File::Temp::cleanup(C:/strawberry/perl/lib/File/Temp.pm:753):
753: foreach my $file (@files) {
File::Temp::cleanup(C:/strawberry/perl/lib/File/Temp.pm:767):
767: @{ $dirs_to_unlink{$$} } : () );
File::Temp::cleanup(C:/strawberry/perl/lib/File/Temp.pm:768):
768: my ($cwd, $cwd_to_remove);
File::Temp::cleanup(C:/strawberry/perl/lib/File/Temp.pm:769):
769: foreach my $dir (@Dirs) {
File::Temp::cleanup(C:/strawberry/perl/lib/File/Temp.pm:789):
789: if (defined $cwd_to_remove) {
File::Temp::cleanup(C:/strawberry/perl/lib/File/Temp.pm:800):
800: @{ $files_to_unlink{$$} } = ()
801: if exists $files_to_unlink{$$};
File::Temp::cleanup(C:/strawberry/perl/lib/File/Temp.pm:802):
802: @{ $dirs_to_unlink{$$} } = ()

803: if exists $dirs_to_unlink{$$};

use AntTweakBar qw/:all/;
use SDL::Events;

Setup part: link AntTweakBar with your OpenGL/SDL system

my $width=200;
my $height=400;
AntTweakBar::init(TW_OPENGL);
AntTweakBar::window_size($width, $height);

in your main rendering routine

sub display {
AntTweakBar::draw;
}

sub process_events {
SDL::Events::pump_events;
my $event = $self->sdl_event;
while (SDL::Events::poll_event($event)) {
...;
AntTweakBar::eventSDL($event);
}
}

define bars with variables

my $bar = AntTweakBar->new(
"TweakBar & Perl",
size => '200 400',
color => '96 216 224'
);
my $enabled = 0;
$bar->add_variable(
mode => 'rw',
name => "Enabled",
type => 'bool',
value => $enabled
);

@davehorner davehorner changed the title silent exit on win8.1 x64 silent exit on win8.1 strawberry 5.18.2 multi-thread-x64 Aug 9, 2014
@basiliscos
Copy link
Member

Hi David,

Thank you for reporting.

Actually my synopsis is the application "skeleton", and it assumes "outer" SDL/OpenGL main loop with all corresponding initialization, draw function etc. Documentation should be improved.

Please, try examples (comes with distribution): http://api.metacpan.org/source/DMOL/AntTweakBar-0.03/eg/simple-glut.pl or http://api.metacpan.org/source/DMOL/AntTweakBar-0.03/eg/available-properties.pl

@basiliscos
Copy link
Member

Thank you very much for providing links to my modules!

@davehorner
Copy link
Contributor Author

Wow so very cool. Thank you so much both samples work fine on my machine! Great work.

I ended up git cloning the https://github.com/PerlGameDev/AntTweakBar.git to get to eg.

I wonder if there is an easy way to get to the eg installed with strawberry perl module i smoked...theres gotta be some tool out there to help a developer lookup the module/dist to local directory... maybe File::Share. idk.

anyways, nice work...maybe I'll get a chance to play with it again soon.
Thanks
--dave

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants