Replaced tox_wait* functions with tox_do_run_interval().

Build system fixes.
This commit is contained in:
irungentoo 2014-05-30 13:20:36 -04:00
parent 6b152d2bac
commit 0e814904e4
No known key found for this signature in database
GPG Key ID: 10349DC9BED89E98
5 changed files with 24 additions and 53 deletions

View File

@ -7,5 +7,5 @@ Name: libtoxcore
Description: Tox protocol library Description: Tox protocol library
Requires: Requires:
Version: @PACKAGE_VERSION@ Version: @PACKAGE_VERSION@
Libs: @NACL_OBJECTS_PKGCONFIG@ -L${libdir} @NACL_LDFLAGS@ -ltoxcore @NACL_LIBS@ @LIBS@ Libs: @NACL_OBJECTS_PKGCONFIG@ -L${libdir} @NACL_LDFLAGS@ -ltoxcore @NACL_LIBS@ @LIBS@ @MATH_LDFLAGS@
Cflags: -I${includedir} Cflags: -I${includedir}

View File

@ -10,10 +10,12 @@ nTox_CFLAGS = $(LIBSODIUM_CFLAGS) \
$(NCURSES_CFLAGS) $(NCURSES_CFLAGS)
nTox_LDADD = $(LIBSODIUM_LDFLAGS) \ nTox_LDADD = $(LIBSODIUM_LDFLAGS) \
$(NAC_LDFLAGS) \ $(NAC_LDFLAGS) \
libtoxcore.la \ libtoxcore.la \
$(LIBSODIUM_LIBS) \ $(LIBSODIUM_LIBS) \
$(NACL_OBJECTS) \
$(NACL_LIBS) \ $(NACL_LIBS) \
$(MATH_LDFLAGS) \
$(NCURSES_LIBS) \ $(NCURSES_LIBS) \
$(WINSOCK2_LIBS) $(WINSOCK2_LIBS)
endif endif
@ -51,6 +53,7 @@ Messenger_test_LDADD = $(LIBSODIUM_LDFLAGS) \
$(LIBSODIUM_LIBS) \ $(LIBSODIUM_LIBS) \
$(NACL_OBJECTS) \ $(NACL_OBJECTS) \
$(NACL_LIBS) \ $(NACL_LIBS) \
$(MATH_LDFLAGS) \
$(WINSOCK2_LIBS) $(WINSOCK2_LIBS)
@ -85,6 +88,7 @@ tox_sync_LDADD = $(LIBSODIUM_LDFLAGS) \
$(LIBSODIUM_LIBS) \ $(LIBSODIUM_LIBS) \
$(NACL_OBJECTS) \ $(NACL_OBJECTS) \
$(NACL_LIBS) \ $(NACL_LIBS) \
$(MATH_LDFLAGS) \
$(WINSOCK2_LIBS) $(WINSOCK2_LIBS)
endif endif

View File

@ -542,6 +542,7 @@ void line_eval(Tox *m, char *line)
} else if (inpt_command == 'q') { //exit } else if (inpt_command == 'q') { //exit
save_data(m); save_data(m);
endwin(); endwin();
tox_kill(m);
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
} else if (inpt_command == 'c') { //set conversation partner } else if (inpt_command == 'c') { //set conversation partner
if (line[2] == 'r') { if (line[2] == 'r') {
@ -1274,17 +1275,8 @@ int main(int argc, char *argv[])
} }
} }
if (numfilesenders > 0)
// during file transfer wasting cpu cycles is almost unavoidable c_sleep(tox_do_run_interval(m));
c_sleep(1);
else {
if (pollok && (tox_wait_prepare(m, data) == 1)) {
/* 250ms is more than fast enough in "regular" mode */
tox_wait_execute(data, 0, 100000);
tox_wait_cleanup(m, data);
} else
c_sleep(25);
}
send_filesenders(m); send_filesenders(m);
tox_do(m); tox_do(m);

View File

@ -782,6 +782,16 @@ int tox_isconnected(Tox *tox)
return DHT_isconnected(m->dht); return DHT_isconnected(m->dht);
} }
/* Return the optimal interval in milliseconds between tox_do() calls.
* This function should be called after every tox_do() call for best performance.
*/
uint32_t tox_do_run_interval(Tox *tox)
{
Messenger *m = tox;
//TODO
return 10;
}
/* Run this at startup. /* Run this at startup.
* *
* return allocated instance of tox on success. * return allocated instance of tox on success.

View File

@ -644,48 +644,13 @@ Tox *tox_new(uint8_t ipv6enabled);
* Free all datastructures. */ * Free all datastructures. */
void tox_kill(Tox *tox); void tox_kill(Tox *tox);
/* The main loop that needs to be run at least 20 times per second. */ /* Return the optimal interval in milliseconds between tox_do() calls.
void tox_do(Tox *tox); * This function should be called after every tox_do() call for best performance.
/*
* tox_wait_data_size():
*
* returns a size of data buffer to allocate. the size is constant.
*
* tox_wait_prepare(): function should be called under lock every time we want to call tox_wait_execute()
* Prepares the data required to call tox_wait_execute() asynchronously
*
* data[] should be of at least tox_wait_data_size() size and it's reserved and kept by the caller
* Use that data[] to call tox_wait_execute()
*
* returns 1 on success
* returns 0 if data was NULL
*
*
* tox_wait_execute(): function can be called asynchronously
* Waits for something to happen on the socket for up to seconds seconds and mircoseconds microseconds.
* mircoseconds should be between 0 and 999999.
* If you set either or both seconds and microseconds to negatives, it will block indefinetly until there
* is an activity.
*
* returns 2 if there is socket activity (i.e. tox_do() should be called)
* returns 1 if the timeout was reached (tox_do() should be called anyway. it's advised to call it at least
* once per second)
* returns 0 if data was NULL
*
*
* tox_wait_cleanup(): function should be called under lock, every time tox_wait_execute() finishes
* Stores results from tox_wait_execute().
*
* returns 1 on success
* returns 0 if data was NULL
*
*/ */
size_t tox_wait_data_size(); uint32_t tox_do_run_interval(Tox *tox);
int tox_wait_prepare(Tox *tox, uint8_t *data);
int tox_wait_execute(uint8_t *data, long seconds, long microseconds);
int tox_wait_cleanup(Tox *tox, uint8_t *data);
/* The main loop that needs to be run in intervals of tox_do_run_interval() ms. */
void tox_do(Tox *tox);
/* SAVING AND LOADING FUNCTIONS: */ /* SAVING AND LOADING FUNCTIONS: */