void inventory_manager::update () { update_container (); sort (); update_view (); }
void on_container_update_ids(GUPnPServiceProxy *content_dir, const char *variable, GValue *value, gpointer user_data) { char **tokens = g_strsplit(g_value_get_string(value), ",", 0); guint i; for (i=0; tokens[i] != NULL && tokens[i+1] != NULL; i+=2) { update_container(content_dir, tokens[i]); } g_strfreev(tokens); }
int main() { listspc::list<testclass> container; testclass *tc; // fill list for (int i=0; i<9; i++) { tc = new testclass(i); container.push_back(*tc); delete tc; } update_container(container); print_container(container); return 0; }
VOID update_thread( PVOID cntr ) { APIRET rc; HAB hab; HMQ hmq; PVOID pvFlipRaw, pvFlopRaw; QPROCESSARRAY apqFlipSorted, apqFlopSorted; APPRECORDARRAY removeList; QPROCESSARRAY procInsertList; QTHREADARRAY threadInsertList; QTHREADARRAY updateList; hab = WinInitialize( 0 ); hmq = WinCreateMsgQueue( hab, 0 ); rc = DosAllocMem( &pvFlipRaw, MEMPOOL, PAG_COMMIT | PAG_READ | PAG_WRITE ); rc = DosAllocMem( &pvFlopRaw, MEMPOOL, PAG_COMMIT | PAG_READ | PAG_WRITE ); rc = DosAllocMem( ( PPVOID ) &apqFlipSorted.pData, sizeof( PQPROCESS ) * MAX_PROCESSES, PAG_COMMIT | PAG_READ | PAG_WRITE ); apqFlipSorted.ulSize = 0; rc = DosAllocMem( ( PPVOID ) &apqFlopSorted.pData, sizeof( PQPROCESS ) * MAX_PROCESSES, PAG_COMMIT | PAG_READ | PAG_WRITE ); apqFlopSorted.ulSize = 0; rc = DosAllocMem( ( PPVOID ) &removeList.pData, sizeof( PAPPRECORD ) * ( MAX_PROCESSES + MAX_THREADS ), PAG_COMMIT | PAG_READ | PAG_WRITE ); removeList.ulSize = 0; rc = DosAllocMem( ( PPVOID ) &procInsertList.pData, sizeof( PQPROCESS ) * MAX_PROCESSES, PAG_COMMIT | PAG_READ | PAG_WRITE ); procInsertList.ulSize = 0; rc = DosAllocMem( ( PPVOID ) &threadInsertList.pData, sizeof( PQTHREAD ) * MAX_THREADS, PAG_COMMIT | PAG_READ | PAG_WRITE ); threadInsertList.ulSize = 0; rc = DosAllocMem( ( PPVOID ) &updateList.pData, sizeof( PQTHREAD ) * MAX_THREADS, PAG_COMMIT | PAG_READ | PAG_WRITE ); updateList.ulSize = 0; DosCreateMutexSem( NULL, &hmuxUpdate, 0L, FALSE ); /* * to save time, the update is done in the flip-flop way - this saves * the cost of reallocating and commiting memory * **/ while( TRUE ) { memset( pvFlipRaw, 0, MEMPOOL ); rc = DosQuerySysState( 0x01, 0L, 0L, 0L, ( PCHAR ) pvFlipRaw, MEMPOOL ); sort_raw( ( PQTOPLEVEL ) pvFlipRaw, &apqFlipSorted ); DosRequestMutexSem( hmuxUpdate, SEM_INDEFINITE_WAIT ); build_update_lists( &apqFlipSorted, &apqFlopSorted, &removeList, &procInsertList, &threadInsertList, &updateList ); update_container( ( HWND ) cntr, &removeList, &procInsertList, &threadInsertList, &updateList ); DosReleaseMutexSem( hmuxUpdate ); DosSleep( 5 * 1000 ); memset( pvFlopRaw, 0, MEMPOOL ); rc = DosQuerySysState( 0x01, 0L, 0L, 0L, ( PCHAR ) pvFlopRaw, MEMPOOL ); sort_raw( ( PQTOPLEVEL ) pvFlopRaw, &apqFlopSorted ); DosRequestMutexSem( hmuxUpdate, SEM_INDEFINITE_WAIT ); build_update_lists( &apqFlopSorted, &apqFlipSorted, &removeList, &procInsertList, &threadInsertList, &updateList ); update_container( ( HWND ) cntr, &removeList, &procInsertList, &threadInsertList, &updateList ); DosReleaseMutexSem( hmuxUpdate ); DosSleep( 5 * 1000 ); }; };