diff options
author | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2011-08-14 20:31:22 +0000 |
---|---|---|
committer | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2011-08-14 20:31:22 +0000 |
commit | c908d810330edba56b476229aba081997f251da7 (patch) | |
tree | dd58223b2abbd4f0fb59374c675af471d1f9ca57 /src/ddhardrescue.c | |
parent | 7f47315422f6846ea700fc7826f47b10dbfe086d (diff) | |
download | 2011-ddhardrescue-c908d810330edba56b476229aba081997f251da7.tar.gz 2011-ddhardrescue-c908d810330edba56b476229aba081997f251da7.tar.bz2 2011-ddhardrescue-c908d810330edba56b476229aba081997f251da7.zip |
Bug hunting : la visualisation marche dans la fenêtre ncurses. Avec un mutex et la fin de l'algo de dump, ça marche mieux qu'avant (segfaults...)
git-svn-id: file:///var/svn/2011-ddhardrescue/trunk@18 d3078510-dda0-49f1-841c-895ef4b7ec81
Diffstat (limited to 'src/ddhardrescue.c')
-rw-r--r-- | src/ddhardrescue.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/ddhardrescue.c b/src/ddhardrescue.c index ba6781e..691bf09 100644 --- a/src/ddhardrescue.c +++ b/src/ddhardrescue.c @@ -63,11 +63,18 @@ int main(int argc, char **argv) { srand(4); // Data structure initialization + // TODO : provides a standard method to do that ? memset(&slices, 0, sizeof(slices)); slices.data=slicesNewSingleton(args.beginSector, args.endSector, S_UNKNOWN); + if ( slices.data == NULL ) { + return 3; + } + slices.data->min=args.beginSector; + slices.data->max=args.endSector; + res=pthread_mutex_init(&(slices.eventListenerMutex), NULL); if (res!=0) { - return 3; + return 4; } // Threads preparation, creation and start @@ -78,7 +85,7 @@ int main(int argc, char **argv) { res=pthread_create(&tWorker, NULL, procWorker, &tArgs); if (res!=0) { - return 4; + return 5; } // Ncurses interface run in the main thread @@ -137,8 +144,7 @@ void cursesUpdateSliceDump(slices_evt_t *slicesEvt, slice_t *modifiedSlice) { //FIXME : do that realy pthread_mutex_lock(&ncursesWriteMutex); - - toPrint=slicesDump(slicesEvt->data, &blockSize, 1000, 0, 1000); + toPrint=slicesDump(slicesEvt->data, &blockSize, 1000, slicesEvt->data->min, slicesEvt->data->max); if (toPrint != NULL) { attron(COLOR_PAIR(4)); mvwprintw(winUpdateSliceDump, 1, 0, toPrint); |