Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVojtech Kral <vojtech@kral.hk>2018-07-27 12:55:11 +0300
committerbubnikv <bubnikv@gmail.com>2018-08-01 13:18:19 +0300
commitb6d70f5fe8653297c6fa6f23019502101c6d655b (patch)
tree06dbdb6d6e74ec7be835c9541a8ded31eea45533 /xs/src/avrdude
parent14c9ff174d25c88fff9593b83e60cdd856ddbcd4 (diff)
FirmwareDialog: UI improvements, bugfixes
Diffstat (limited to 'xs/src/avrdude')
-rw-r--r--xs/src/avrdude/avrdude-slic3r.cpp24
-rw-r--r--xs/src/avrdude/avrdude-slic3r.hpp8
2 files changed, 26 insertions, 6 deletions
diff --git a/xs/src/avrdude/avrdude-slic3r.cpp b/xs/src/avrdude/avrdude-slic3r.cpp
index 4a7f22d6e..0577fe6d0 100644
--- a/xs/src/avrdude/avrdude-slic3r.cpp
+++ b/xs/src/avrdude/avrdude-slic3r.cpp
@@ -35,8 +35,9 @@ struct AvrDude::priv
{
std::string sys_config;
std::deque<std::vector<std::string>> args;
- size_t current_args_set = 0;
bool cancelled = false;
+ int exit_code = 0;
+ size_t current_args_set = 0;
RunFn run_fn;
MessageFn message_fn;
ProgressFn progress_fn;
@@ -146,15 +147,15 @@ AvrDude::Ptr AvrDude::run()
int res = -1;
if (self->p->run_fn) {
- self->p->run_fn(*self);
+ self->p->run_fn();
}
if (! self->p->cancelled) {
- res = self->p->run();
+ self->p->exit_code = self->p->run();
}
if (self->p->complete_fn) {
- self->p->complete_fn(res, self->p->current_args_set);
+ self->p->complete_fn();
}
});
@@ -179,5 +180,20 @@ void AvrDude::join()
}
}
+bool AvrDude::cancelled()
+{
+ return p ? p->cancelled : false;
+}
+
+int AvrDude::exit_code()
+{
+ return p ? p->exit_code : 0;
+}
+
+size_t AvrDude::last_args_set()
+{
+ return p ? p->current_args_set : 0;
+}
+
}
diff --git a/xs/src/avrdude/avrdude-slic3r.hpp b/xs/src/avrdude/avrdude-slic3r.hpp
index 399df2358..86e097034 100644
--- a/xs/src/avrdude/avrdude-slic3r.hpp
+++ b/xs/src/avrdude/avrdude-slic3r.hpp
@@ -12,10 +12,10 @@ class AvrDude
{
public:
typedef std::shared_ptr<AvrDude> Ptr;
- typedef std::function<void(AvrDude&)> RunFn;
+ typedef std::function<void()> RunFn;
typedef std::function<void(const char * /* msg */, unsigned /* size */)> MessageFn;
typedef std::function<void(const char * /* task */, unsigned /* progress */)> ProgressFn;
- typedef std::function<void(int /* exit status */, size_t /* args_id */)> CompleteFn;
+ typedef std::function<void()> CompleteFn;
// Main c-tor, sys_config is the location of avrdude's main configuration file
AvrDude(std::string sys_config);
@@ -54,6 +54,10 @@ public:
void cancel();
void join();
+
+ bool cancelled(); // Whether avrdude run was cancelled
+ int exit_code(); // The exit code of the last invocation
+ size_t last_args_set(); // Index of the last argument set that was processsed
private:
struct priv;
std::unique_ptr<priv> p;