diff --git a/src/wx-config.c b/src/wx-config.c index 30b2dc7..6ddd6ef 100644 --- a/src/wx-config.c +++ b/src/wx-config.c @@ -1348,6 +1348,7 @@ static void update_hdd_cdrom(void* hdlg) } } +static volatile int create_drive_pos; static int create_drive(void* data) { int c; @@ -1355,7 +1356,10 @@ static int create_drive(void* data) FILE* f = (FILE*)data; memset(buf, 0, 512); for (c = 0; c < (hd_new_cyl * hd_new_hpc * hd_new_spt); c++) - fwrite(buf, 512, 1, f); + { + create_drive_pos = c; + fwrite(buf, 512, 1, f); + } fclose(f); @@ -1443,7 +1447,7 @@ static int hdnew_dlgproc(void* hdlg, int message, INT_PARAM wParam, LONG_PARAM l wx_messagebox(hdlg, "Can't open file for write", "PCem error", WX_MB_OK); return TRUE; } - wx_progressdialogpulse(hdlg, "PCem", "Creating drive, please wait...", create_drive, f); + wx_progressdialog(hdlg, "PCem", "Creating drive, please wait...", create_drive, f, hd_new_cyl * hd_new_hpc * hd_new_spt, &create_drive_pos); wx_messagebox(hdlg, "Drive created, remember to partition and format the new drive.", "PCem", WX_MB_OK); diff --git a/src/wx-utils.cc b/src/wx-utils.cc index e633373..6faa359 100644 --- a/src/wx-utils.cc +++ b/src/wx-utils.cc @@ -749,7 +749,7 @@ static void progress_callback(void* data) d->active = 0; } -int wx_progressdialogpulse(void* window, const char* title, const char* message, WX_CALLBACK callback, void* data) +int wx_progressdialog(void* window, const char* title, const char* message, WX_CALLBACK callback, void* data, int range, volatile int *pos) { struct progress_data_t pdata; pdata.callback = callback; @@ -759,10 +759,10 @@ int wx_progressdialogpulse(void* window, const char* title, const char* message, thread_t* t = thread_create(progress_callback, &pdata); - wxProgressDialog dlg(title, message, 100, (wxWindow*)window, wxPD_APP_MODAL | wxPD_SMOOTH | wxPD_AUTO_HIDE); + wxProgressDialog dlg(title, message, range, (wxWindow*)window, wxPD_APP_MODAL | wxPD_SMOOTH | wxPD_AUTO_HIDE); while (pdata.active) { - dlg.Pulse(); + dlg.Update(*pos); wxMilliSleep(50); } thread_kill(t); diff --git a/src/wx-utils.h b/src/wx-utils.h index f06b055..3a8a3a5 100644 --- a/src/wx-utils.h +++ b/src/wx-utils.h @@ -44,7 +44,7 @@ extern "C" { void* wx_getnativewindow(void* window); void wx_callback(void* window, WX_CALLBACK callback, void* data); void wx_togglewindow(void* window); - int wx_progressdialogpulse(void* window, const char* title, const char* message, WX_CALLBACK callback, void* data); + int wx_progressdialog(void* window, const char* title, const char* message, WX_CALLBACK callback, void* data, int range, volatile int *pos); void wx_enddialog(void* window, int ret_code);