summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <mvo@debian.org>2013-10-13 15:10:53 +0200
committerMichael Vogt <mvo@debian.org>2013-10-13 15:10:53 +0200
commitca5b257835578d98145becbc3d97505394a7726c (patch)
treee93be5c538e0fb6821e17d132fe4d8ea31a1d617
parente6ad8031b774af9bdd5d460d9983450bb5a03d0d (diff)
add APT::Progress::PackageManager::Pulse()
-rw-r--r--apt-pkg/deb/dpkgpm.cc5
-rw-r--r--apt-pkg/iprogress.h7
2 files changed, 9 insertions, 3 deletions
diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc
index 0c3be4ce5..d617a3c0c 100644
--- a/apt-pkg/deb/dpkgpm.cc
+++ b/apt-pkg/deb/dpkgpm.cc
@@ -1364,13 +1364,14 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress)
FD_SET(_dpkgin, &rfds);
if(master >= 0)
FD_SET(master, &rfds);
- tv.tv_sec = 1;
- tv.tv_nsec = 0;
+ tv.tv_sec = 0;
+ tv.tv_nsec = d->progress->GetPulseInterval();
select_ret = pselect(max(master, _dpkgin)+1, &rfds, NULL, NULL,
&tv, &original_sigmask);
if (select_ret < 0 && (errno == EINVAL || errno == ENOSYS))
select_ret = racy_pselect(max(master, _dpkgin)+1, &rfds, NULL,
NULL, &tv, &original_sigmask);
+ d->progress->Pulse();
if (select_ret == 0)
continue;
else if (select_ret < 0 && errno == EINTR)
diff --git a/apt-pkg/iprogress.h b/apt-pkg/iprogress.h
index 6519e9445..04520ffe8 100644
--- a/apt-pkg/iprogress.h
+++ b/apt-pkg/iprogress.h
@@ -28,7 +28,12 @@ namespace Progress {
virtual void Finished() {};
virtual pid_t fork() {return fork(); };
-
+
+ virtual void Pulse() {};
+ virtual long GetPulseInterval() {
+ return 500000;
+ };
+
virtual bool StatusChanged(std::string PackageName,
unsigned int StepsDone,
unsigned int TotalSteps,