Просмотр исходного кода

add APT::Progress::PackageManager::Pulse()

Michael Vogt лет назад: 12
Родитель
Сommit
ca5b257835
2 измененных файлов с 9 добавлено и 3 удалено
  1. 3 2
      apt-pkg/deb/dpkgpm.cc
  2. 6 1
      apt-pkg/iprogress.h

+ 3 - 2
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)

+ 6 - 1
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,