Juggled timers around; now can sit at 'idle' and eating only 3-4% of cpu. Should...
[pandora-libraries.git] / minimenu / mmenu.c
index 7c2392e..3cb5d18 100644 (file)
@@ -80,7 +80,6 @@ char *g_skinpath = NULL; // where 'skin_selected' is located .. the fullpath inc
 pnd_conf_handle g_skinconf = NULL;
 
 void sigquit_handler ( int n );
-unsigned char cat_is_visible ( pnd_conf_handle h, char *catname );
 unsigned char app_is_visible ( pnd_conf_handle h, char *uniqueid );
 
 int main ( int argc, char *argv[] ) {
@@ -360,7 +359,7 @@ int main ( int argc, char *argv[] ) {
 
   // create all cat
   if ( pnd_conf_get_as_int_d ( g_conf, "categories.do_all_cat", 1 ) ) {
-    category_push ( g_x11_present ? CATEGORY_ALL "    (X11)" : CATEGORY_ALL "   (No X11)", NULL /*app*/, 0, NULL /* fspath */, 1 /* visible */ );
+    category_push ( g_x11_present ? CATEGORY_ALL "    (X11)" : CATEGORY_ALL "   (No X11)", NULL /* parent cat */, NULL /*app*/, 0, NULL /* fspath */, 1 /* visible */ );
   }
 
   // set up category mappings
@@ -374,16 +373,16 @@ int main ( int argc, char *argv[] ) {
 
   /* actual work now
    */
-  unsigned char block = 1;
-
   if ( g_autorescan ) {
-    block = 0;
 
     // set up notifications
     dbh = pnd_dbusnotify_init();
     pnd_log ( pndn_debug, "Setting up dbusnotify\n" );
     //setup_notifications();
 
+    // create a timer thread, that will trigger us to check for SD insert notifications every once in awhile
+    ui_threaded_timer_create();
+
   } // set up rescan
 
   /* set speed to minimenu run-speed, now that we're all set up
@@ -406,33 +405,8 @@ int main ( int argc, char *argv[] ) {
     // show the menu, or changes thereof
     ui_render();
 
-    // wait for input or time-based events (like animations)
-    // deal with inputs
-    ui_process_input ( block /* block */ );
-
-    // did a rescan event trigger?
-    if ( g_autorescan ) {
-      unsigned char watch_dbus = 0;
-      unsigned char watch_inotify = 0;
-
-      if ( dbh ) {
-       watch_dbus = pnd_dbusnotify_rediscover_p ( dbh );
-      }
-
-      if ( nh ) {
-       watch_inotify = pnd_notify_rediscover_p ( nh );
-      }
-
-      if ( watch_dbus || watch_inotify ) {
-       pnd_log ( pndn_debug, "dbusnotify detected SD event\n" );
-       applications_free();
-       applications_scan();
-      }
-
-    } // rescan?
-
-    // sleep? block?
-    usleep ( 100000 /*5000*/ );
+    // wait for input or time-based events (like animations) and deal with inputs
+    ui_process_input ( dbh, nh );
 
   } // while
 
@@ -678,7 +652,7 @@ void applications_scan ( void ) {
        // push to All category
        // we do this first, so first category is always All
        if ( pnd_conf_get_as_int_d ( g_conf, "categories.do_all_cat", 1 ) ) {
-         category_push ( g_x11_present ? CATEGORY_ALL "    (X11)" : CATEGORY_ALL "   (No X11)", iter, ovrh, NULL /* fspath */, 1 /* visible */ );
+         category_push ( g_x11_present ? CATEGORY_ALL "    (X11)" : CATEGORY_ALL "   (No X11)", NULL /* parent cat */, iter, ovrh, NULL /* fspath */, 1 /* visible */ );
        } // all?
 
        // is this app suppressed? if not, show it in whatever categories the user is allowing
@@ -722,7 +696,7 @@ void applications_scan ( void ) {
 
       // check if dir is empty; if so, skip it.
       if ( ! is_dir_empty ( buffer ) ) {
-       category_push ( tabname /* tab name */, NULL /* app */, 0 /* override */, buffer /* fspath */, 1 /* visible */ );
+       category_push ( tabname /* tab name */, NULL /* parent cat */, NULL /* app */, 0 /* override */, buffer /* fspath */, 1 /* visible */ );
       }
 
     }