Преглед изворни кода

deal with nr_terminal_rows unavailable

Michael Vogt пре 12 година
родитељ
комит
db78c60c6a
2 измењених фајлова са 13 додато и 6 уклоњено
  1. 11 6
      apt-pkg/iprogress.cc
  2. 2 0
      apt-pkg/iprogress.h

+ 11 - 6
apt-pkg/iprogress.cc

@@ -7,7 +7,7 @@
 namespace APT {
 namespace APT {
 namespace Progress {
 namespace Progress {
 
 
-static void SetupTerminalScrollArea(int nr_rows)
+void PackageManagerFancy::SetupTerminalScrollArea(int nr_rows)
 {
 {
      // scroll down a bit to avoid visual glitch when the screen
      // scroll down a bit to avoid visual glitch when the screen
      // area shrinks by one row
      // area shrinks by one row
@@ -23,6 +23,7 @@ static void SetupTerminalScrollArea(int nr_rows)
      std::cout << "\033[u";
      std::cout << "\033[u";
      static const char *move_cursor_up = "\033[1A";
      static const char *move_cursor_up = "\033[1A";
      std::cout << move_cursor_up;
      std::cout << move_cursor_up;
+
      std::flush(std::cout);
      std::flush(std::cout);
 }
 }
 
 
@@ -38,16 +39,20 @@ PackageManagerFancy::PackageManagerFancy()
 
 
 void PackageManagerFancy::Started()
 void PackageManagerFancy::Started()
 {
 {
-   SetupTerminalScrollArea(nr_terminal_rows);
+   if (nr_terminal_rows > 0)
+      SetupTerminalScrollArea(nr_terminal_rows);
 }
 }
 
 
 void PackageManagerFancy::Finished()
 void PackageManagerFancy::Finished()
 {
 {
-   SetupTerminalScrollArea(nr_terminal_rows + 1);
+   if (nr_terminal_rows > 0)
+   {
+      SetupTerminalScrollArea(nr_terminal_rows + 1);
 
 
-   // override the progress line (sledgehammer)
-   static const char* clear_screen_below_cursor = "\033[J";
-   std::cout << clear_screen_below_cursor;
+      // override the progress line (sledgehammer)
+      static const char* clear_screen_below_cursor = "\033[J";
+      std::cout << clear_screen_below_cursor;
+   }
 }
 }
 
 
 void PackageManagerFancy::StatusChanged(std::string PackageName, 
 void PackageManagerFancy::StatusChanged(std::string PackageName, 

+ 2 - 0
apt-pkg/iprogress.h

@@ -30,6 +30,8 @@ namespace Progress {
  protected:
  protected:
     int last_reported_progress;
     int last_reported_progress;
     int nr_terminal_rows;
     int nr_terminal_rows;
+    void SetupTerminalScrollArea(int nr_rows);
+
  public:
  public:
     PackageManagerFancy();
     PackageManagerFancy();
     virtual void Started();
     virtual void Started();