Add meaningful process indicator to hard drive image creation.

This commit is contained in:
SarahW 2018-02-27 21:59:09 +00:00
commit b7193df5ac
3 changed files with 10 additions and 6 deletions

View file

@ -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);

View file

@ -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);

View file

@ -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);