Refresh Behaviour (nCurses)
up vote
1
down vote
favorite
I recently was studying ncurses and a doubt just hit me: What EXACTLY does the refresh function does?
I searched a little about it, read some tutorials and even a documentation and my conclusion was that it "refreshes" the actual screen with the format done on the "buffer screen" (it just updates the output on the screen).
Doing some tests I clearly realized I was wrong since the output appeared with and without the refresh function! Below there's a simple program I did just to test it and I can't realize the actual functionality of this function.
#include <ncurses.h>
#include <string.h>
int main()
char mesg = "Just a String";
int row, col;
initscr();
getmaxyx(stdscr, row, col);
while(true)
refresh();
mvprintw(row/2, (col - strlen(mesg))/2, "%s", mesg);
mvprintw(row-2, 0, "This screen has %d rows and %d columnsn", row, col);
char c = getch();
if (c == 'e') row++;
else if (c == 'q') row--;
else if (c == 'a') col--;
else if (c == 'd') col++;
getch();
endwin();
return 0;
I moved the refresh all over the program, I removed it and nothing seems to change. What exactly it does??
c ncurses
add a comment |
up vote
1
down vote
favorite
I recently was studying ncurses and a doubt just hit me: What EXACTLY does the refresh function does?
I searched a little about it, read some tutorials and even a documentation and my conclusion was that it "refreshes" the actual screen with the format done on the "buffer screen" (it just updates the output on the screen).
Doing some tests I clearly realized I was wrong since the output appeared with and without the refresh function! Below there's a simple program I did just to test it and I can't realize the actual functionality of this function.
#include <ncurses.h>
#include <string.h>
int main()
char mesg = "Just a String";
int row, col;
initscr();
getmaxyx(stdscr, row, col);
while(true)
refresh();
mvprintw(row/2, (col - strlen(mesg))/2, "%s", mesg);
mvprintw(row-2, 0, "This screen has %d rows and %d columnsn", row, col);
char c = getch();
if (c == 'e') row++;
else if (c == 'q') row--;
else if (c == 'a') col--;
else if (c == 'd') col++;
getch();
endwin();
return 0;
I moved the refresh all over the program, I removed it and nothing seems to change. What exactly it does??
c ncurses
1
It may be platform dependent. ncurses works on a range of platforms, and some of them may not support ad hoc writes and only a total rewrite. It is open source so you could check the actual code.
– usr2564301
Nov 11 at 18:32
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I recently was studying ncurses and a doubt just hit me: What EXACTLY does the refresh function does?
I searched a little about it, read some tutorials and even a documentation and my conclusion was that it "refreshes" the actual screen with the format done on the "buffer screen" (it just updates the output on the screen).
Doing some tests I clearly realized I was wrong since the output appeared with and without the refresh function! Below there's a simple program I did just to test it and I can't realize the actual functionality of this function.
#include <ncurses.h>
#include <string.h>
int main()
char mesg = "Just a String";
int row, col;
initscr();
getmaxyx(stdscr, row, col);
while(true)
refresh();
mvprintw(row/2, (col - strlen(mesg))/2, "%s", mesg);
mvprintw(row-2, 0, "This screen has %d rows and %d columnsn", row, col);
char c = getch();
if (c == 'e') row++;
else if (c == 'q') row--;
else if (c == 'a') col--;
else if (c == 'd') col++;
getch();
endwin();
return 0;
I moved the refresh all over the program, I removed it and nothing seems to change. What exactly it does??
c ncurses
I recently was studying ncurses and a doubt just hit me: What EXACTLY does the refresh function does?
I searched a little about it, read some tutorials and even a documentation and my conclusion was that it "refreshes" the actual screen with the format done on the "buffer screen" (it just updates the output on the screen).
Doing some tests I clearly realized I was wrong since the output appeared with and without the refresh function! Below there's a simple program I did just to test it and I can't realize the actual functionality of this function.
#include <ncurses.h>
#include <string.h>
int main()
char mesg = "Just a String";
int row, col;
initscr();
getmaxyx(stdscr, row, col);
while(true)
refresh();
mvprintw(row/2, (col - strlen(mesg))/2, "%s", mesg);
mvprintw(row-2, 0, "This screen has %d rows and %d columnsn", row, col);
char c = getch();
if (c == 'e') row++;
else if (c == 'q') row--;
else if (c == 'a') col--;
else if (c == 'd') col++;
getch();
endwin();
return 0;
I moved the refresh all over the program, I removed it and nothing seems to change. What exactly it does??
c ncurses
c ncurses
asked Nov 11 at 17:59
jansenalcantara
83
83
1
It may be platform dependent. ncurses works on a range of platforms, and some of them may not support ad hoc writes and only a total rewrite. It is open source so you could check the actual code.
– usr2564301
Nov 11 at 18:32
add a comment |
1
It may be platform dependent. ncurses works on a range of platforms, and some of them may not support ad hoc writes and only a total rewrite. It is open source so you could check the actual code.
– usr2564301
Nov 11 at 18:32
1
1
It may be platform dependent. ncurses works on a range of platforms, and some of them may not support ad hoc writes and only a total rewrite. It is open source so you could check the actual code.
– usr2564301
Nov 11 at 18:32
It may be platform dependent. ncurses works on a range of platforms, and some of them may not support ad hoc writes and only a total rewrite. It is open source so you could check the actual code.
– usr2564301
Nov 11 at 18:32
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
accepted
The getch
function calls refresh
, which is probably confusing you as you move the explicit call for refresh
to different places.
Curses functions write to a virtual screen (i.e., not real) and refresh
updates the physical screen (the real one) by comparing the two and making small changes (if possible).
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
accepted
The getch
function calls refresh
, which is probably confusing you as you move the explicit call for refresh
to different places.
Curses functions write to a virtual screen (i.e., not real) and refresh
updates the physical screen (the real one) by comparing the two and making small changes (if possible).
add a comment |
up vote
0
down vote
accepted
The getch
function calls refresh
, which is probably confusing you as you move the explicit call for refresh
to different places.
Curses functions write to a virtual screen (i.e., not real) and refresh
updates the physical screen (the real one) by comparing the two and making small changes (if possible).
add a comment |
up vote
0
down vote
accepted
up vote
0
down vote
accepted
The getch
function calls refresh
, which is probably confusing you as you move the explicit call for refresh
to different places.
Curses functions write to a virtual screen (i.e., not real) and refresh
updates the physical screen (the real one) by comparing the two and making small changes (if possible).
The getch
function calls refresh
, which is probably confusing you as you move the explicit call for refresh
to different places.
Curses functions write to a virtual screen (i.e., not real) and refresh
updates the physical screen (the real one) by comparing the two and making small changes (if possible).
answered Nov 11 at 20:58
Thomas Dickey
30.9k62659
30.9k62659
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53251589%2frefresh-behaviour-ncurses%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
It may be platform dependent. ncurses works on a range of platforms, and some of them may not support ad hoc writes and only a total rewrite. It is open source so you could check the actual code.
– usr2564301
Nov 11 at 18:32