From 748b294646092e461053ade09a52a29586cbf4f7 Mon Sep 17 00:00:00 2001 From: Ludovic Pouzenc Date: Sat, 8 Oct 2011 21:50:22 +0000 Subject: Essai d'optimisation de l'affichage : ne pas rafraichir tout le dessin à chaque fois. Au finak c'est compliqué car on ne peut pas réutiliser le code de slicesDump car on ne peut pas relire les caractères envoyés sur la WINDOW ncurse... MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///var/svn/2011-ddhardrescue/trunk@27 d3078510-dda0-49f1-841c-895ef4b7ec81 --- src/cursesview.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/cursesview.c') diff --git a/src/cursesview.c b/src/cursesview.c index 0b346fb..83b133f 100644 --- a/src/cursesview.c +++ b/src/cursesview.c @@ -137,7 +137,7 @@ void cursesMainLoop(slices_evt_t *slicesEvt) { // TODO : faire une structure avec tous les éléments graphiques utiles au listener et tout passer par référence de la mainloop à ce listener #define DEFAULT_ZOOM_FACTOR 2.f -int winUpdateSliceDumpMouseEventListener(MEVENT mevent, WINDOW *winDebug) { +int winSlicesMouseEventListener(MEVENT mevent, WINDOW *winDebug) { bool resb; int pX, pY, maxX, maxY; address_t delta; @@ -202,7 +202,7 @@ int cursesInit(WINDOW *wins[], PANEL *panels[], int count) { set_panel_userptr(panels[2], panels[0]); */ - set_panel_userptr(panels[1], winUpdateSliceDumpMouseEventListener); + set_panel_userptr(panels[1], winSlicesMouseEventListener); #ifdef NCURSES_MOUSE_VERSION sprintf(buf, "Debug infos : mmask=%lx", mmask); @@ -233,8 +233,11 @@ void cursesUpdateSliceDump(slices_evt_t *slicesEvt, slice_t *modifiedSlice) { unsigned int charCount=(getmaxx(winUpdateSliceDump)-getbegx(winUpdateSliceDump))*(getmaxy(winUpdateSliceDump)-getbegy(winUpdateSliceDump)+2); //TODO : refesh only right parts of the representation + // This need a representation that not depends on what is already drawn because of consistency and because it not possible to re-read printed ASCII representation in curse windows + pthread_mutex_lock(&ncursesWriteMutex); + toPrint=slicesDump(slicesEvt->data, &blockSize, charCount, sliceDumpBegin, sliceDumpEnd); if (toPrint != NULL) { attron(COLOR_PAIR(4)); -- cgit v1.2.3