diff options
Diffstat (limited to 'apps/buffering.c')
-rw-r--r-- | apps/buffering.c | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/apps/buffering.c b/apps/buffering.c index a130a787ff..c47564b7e1 100644 --- a/apps/buffering.c +++ b/apps/buffering.c | |||
@@ -1339,7 +1339,8 @@ static struct memory_handle *prep_bufdata(int handle_id, size_t *size, | |||
1339 | 1339 | ||
1340 | if (h->filerem > 0 && avail < realsize) { | 1340 | if (h->filerem > 0 && avail < realsize) { |
1341 | /* Data isn't ready. Request buffering */ | 1341 | /* Data isn't ready. Request buffering */ |
1342 | buf_request_buffer_handle(handle_id); | 1342 | LOGFQUEUE("buffering >| Q_START_FILL %d",handle_id); |
1343 | queue_send(&buffering_queue, Q_START_FILL, handle_id); | ||
1343 | /* Wait for the data to be ready */ | 1344 | /* Wait for the data to be ready */ |
1344 | do | 1345 | do |
1345 | { | 1346 | { |
@@ -1486,7 +1487,6 @@ SECONDARY EXPORTED FUNCTIONS | |||
1486 | ============================ | 1487 | ============================ |
1487 | 1488 | ||
1488 | buf_handle_offset | 1489 | buf_handle_offset |
1489 | buf_request_buffer_handle | ||
1490 | buf_set_base_handle | 1490 | buf_set_base_handle |
1491 | buf_handle_data_type | 1491 | buf_handle_data_type |
1492 | buf_is_handle | 1492 | buf_is_handle |
@@ -1510,12 +1510,6 @@ ssize_t buf_handle_offset(int handle_id) | |||
1510 | return h->offset; | 1510 | return h->offset; |
1511 | } | 1511 | } |
1512 | 1512 | ||
1513 | void buf_request_buffer_handle(int handle_id) | ||
1514 | { | ||
1515 | LOGFQUEUE("buffering >| Q_START_FILL %d",handle_id); | ||
1516 | queue_send(&buffering_queue, Q_START_FILL, handle_id); | ||
1517 | } | ||
1518 | |||
1519 | void buf_set_base_handle(int handle_id) | 1513 | void buf_set_base_handle(int handle_id) |
1520 | { | 1514 | { |
1521 | mutex_lock(&llist_mutex); | 1515 | mutex_lock(&llist_mutex); |
@@ -1642,7 +1636,15 @@ static void NORETURN_ATTR buffering_thread(void) | |||
1642 | LOGFQUEUE("buffering < Q_START_FILL %d", (int)ev.data); | 1636 | LOGFQUEUE("buffering < Q_START_FILL %d", (int)ev.data); |
1643 | shrink_buffer(); | 1637 | shrink_buffer(); |
1644 | queue_reply(&buffering_queue, 1); | 1638 | queue_reply(&buffering_queue, 1); |
1645 | filling |= buffer_handle((int)ev.data, 0); | 1639 | if (buffer_handle((int)ev.data, 0)) { |
1640 | filling = true; | ||
1641 | } | ||
1642 | else if (num_handles > 0 && conf_watermark > 0) { | ||
1643 | update_data_counters(NULL); | ||
1644 | if (data_counters.useful >= BUF_WATERMARK) { | ||
1645 | send_event(BUFFER_EVENT_BUFFER_LOW, NULL); | ||
1646 | } | ||
1647 | } | ||
1646 | break; | 1648 | break; |
1647 | 1649 | ||
1648 | case Q_BUFFER_HANDLE: | 1650 | case Q_BUFFER_HANDLE: |
@@ -1699,12 +1701,7 @@ static void NORETURN_ATTR buffering_thread(void) | |||
1699 | #endif | 1701 | #endif |
1700 | 1702 | ||
1701 | if (filling) { | 1703 | if (filling) { |
1702 | if (data_counters.remaining > 0 && BUF_USED < buffer_len) { | 1704 | filling = data_counters.remaining > 0 ? fill_buffer() : false; |
1703 | filling = fill_buffer(); | ||
1704 | } | ||
1705 | else if (data_counters.remaining == 0) { | ||
1706 | filling = false; | ||
1707 | } | ||
1708 | } else if (ev.id == SYS_TIMEOUT) { | 1705 | } else if (ev.id == SYS_TIMEOUT) { |
1709 | if (data_counters.useful < BUF_WATERMARK) { | 1706 | if (data_counters.useful < BUF_WATERMARK) { |
1710 | /* The buffer is low and we're idle, just watching the levels | 1707 | /* The buffer is low and we're idle, just watching the levels |