ncreel_destroy(): use ncreel_del() directly #664

pull/665/head
nick black 4 years ago
parent 38c0509d86
commit 4fb012a12d
No known key found for this signature in database
GPG Key ID: 5F43400C21CBFACC

@ -744,12 +744,9 @@ int ncreel_del(ncreel* nr, struct nctablet* t){
int ncreel_destroy(ncreel* nreel){ int ncreel_destroy(ncreel* nreel){
int ret = 0; int ret = 0;
if(nreel){ if(nreel){
nctablet* t = nreel->tablets; nctablet* t;
while(t){ while( (t = nreel->tablets) ){
t->prev->next = NULL;
nctablet* tmp = t->next;
ncreel_del(nreel, t); ncreel_del(nreel, t);
t = tmp;
} }
ncplane_destroy(nreel->p); ncplane_destroy(nreel->p);
free(nreel); free(nreel);

@ -103,26 +103,19 @@ void parse_args(int argc, char** argv, struct notcurses_options* opts,
opts->suppress_banner = true; opts->suppress_banner = true;
} }
int main(int argc, char** argv){ int runreels(NotCurses& nc, ncreel_options& nopts){
if(setlocale(LC_ALL, "") == nullptr){
return EXIT_FAILURE;
}
notcurses_options ncopts{};
ncreel_options nopts{};
parse_args(argc, argv, &ncopts, &nopts);
NotCurses nc(ncopts);
std::unique_ptr<Plane> nstd(nc.get_stdplane()); std::unique_ptr<Plane> nstd(nc.get_stdplane());
int dimy, dimx; int dimy, dimx;
nstd->get_dim(&dimy, &dimx); nstd->get_dim(&dimy, &dimx);
auto n = std::make_shared<Plane>(dimy - 1, dimx, 1, 0); auto n = std::make_shared<Plane>(dimy - 1, dimx, 1, 0);
if(!n){ if(!n){
return EXIT_FAILURE; return -1;
} }
if(!n->set_fg_rgb(0xb1, 0x1b, 0xb1)){ if(!n->set_fg_rgb(0xb1, 0x1b, 0xb1)){
return EXIT_FAILURE; return -1;
} }
if(n->putstr(0, NCAlign::Center, "(a)dd (d)el (q)uit") <= 0){ if(n->putstr(0, NCAlign::Center, "(a)dd (d)el (q)uit") <= 0){
return EXIT_FAILURE; return -1;
} }
channels_set_fg(&nopts.focusedchan, 0xffffff); channels_set_fg(&nopts.focusedchan, 0xffffff);
channels_set_bg(&nopts.focusedchan, 0x00c080); channels_set_bg(&nopts.focusedchan, 0x00c080);
@ -130,13 +123,13 @@ int main(int argc, char** argv){
nopts.toff = 3; nopts.toff = 3;
std::shared_ptr<NcReel> nr(n->ncreel_create(&nopts)); std::shared_ptr<NcReel> nr(n->ncreel_create(&nopts));
if(!nr || !nc.render()){ if(!nr || !nc.render()){
return EXIT_FAILURE; return -1;
} }
char32_t key; char32_t key;
while((key = nc.getc(true)) != (char32_t)-1){ while((key = nc.getc(true)) != (char32_t)-1){
switch(key){ switch(key){
case 'q': case 'q':
return !nc.stop() ? EXIT_FAILURE : EXIT_SUCCESS; return 0;
case 'a':{ case 'a':{
TabletCtx* tctx = new TabletCtx(); TabletCtx* tctx = new TabletCtx();
nr->add(nullptr, nullptr, tabletfxn, tctx); nr->add(nullptr, nullptr, tabletfxn, tctx);
@ -158,5 +151,18 @@ int main(int argc, char** argv){
break; break;
} }
} }
return EXIT_FAILURE; return -1;
}
int main(int argc, char** argv){
if(setlocale(LC_ALL, "") == nullptr){
return EXIT_FAILURE;
}
notcurses_options ncopts{};
ncreel_options nopts{};
parse_args(argc, argv, &ncopts, &nopts);
NotCurses nc(ncopts);
int r = runreels(nc, nopts);
nc.stop();
return r ? EXIT_FAILURE : EXIT_SUCCESS;
} }

Loading…
Cancel
Save