@@ -1084,8 +1084,23 @@ void add_task(std::string task_id, std::function<void()> task) {
1084
1084
queue_cond.notify_one();
1085
1085
}
1086
1086
1087
+ void update_progress_cb(int step, int steps, float time, void* _data) {
1088
+ using json = nlohmann::json;
1089
+ if (running_task_id != "") {
1090
+ std::lock_guard<std::mutex> results_lock(results_mutex);
1091
+ json running_task_json = task_results[running_task_id];
1092
+ running_task_json["step"] = step;
1093
+ running_task_json["steps"] = steps;
1094
+ if (running_task_json["status"] == "Working" && step == steps) {
1095
+ running_task_json["status"] = "Decoding";
1096
+ }
1097
+ task_results[running_task_id] = running_task_json;
1098
+ }
1099
+ }
1100
+
1087
1101
void start_server(SDParams params) {
1088
1102
sd_set_log_callback(sd_log_cb, (void*)¶ms);
1103
+ sd_set_progress_callback(update_progress_cb, NULL);
1089
1104
1090
1105
server_log_params = (void*)¶ms;
1091
1106
@@ -1122,6 +1137,7 @@ void start_server(SDParams params) {
1122
1137
pending_task_json["status"] = "Pending";
1123
1138
pending_task_json["data"] = json::array();
1124
1139
pending_task_json["step"] = -1;
1140
+ pending_task_json["steps"] = -1;
1125
1141
pending_task_json["eta"] = "?";
1126
1142
1127
1143
std::lock_guard<std::mutex> results_lock(results_mutex);
@@ -1167,6 +1183,7 @@ void start_server(SDParams params) {
1167
1183
task_json["status"] = "Loading";
1168
1184
task_json["data"] = json::array();
1169
1185
task_json["step"] = -1;
1186
+ task_json["step"] = -1;
1170
1187
task_json["eta"] = "?";
1171
1188
1172
1189
std::lock_guard<std::mutex> results_lock(results_mutex);
@@ -1208,6 +1225,7 @@ void start_server(SDParams params) {
1208
1225
started_task_json["status"] = "Working";
1209
1226
started_task_json["data"] = json::array();
1210
1227
started_task_json["step"] = 0;
1228
+ started_task_json["step"] = params.lastRequest.sample_steps;
1211
1229
started_task_json["eta"] = "?";
1212
1230
1213
1231
std::lock_guard<std::mutex> results_lock(results_mutex);
0 commit comments