summaryrefslogtreecommitdiff
path: root/apps/plugins/pictureflow
diff options
context:
space:
mode:
authorThomas Jarosch <tomj@simonv.com>2015-03-01 18:20:22 +0100
committerThomas Jarosch <tomj@simonv.com>2015-03-01 18:23:17 +0100
commit079d7fbb8b797c235dd7d4eb292aed6c67677a78 (patch)
tree4577e0729d3b4e534193fb3f48d4551f5263a2ea /apps/plugins/pictureflow
parent55f1d9486fcff6ae7af6cac3a0200a996c194c6c (diff)
downloadrockbox-079d7fbb8b797c235dd7d4eb292aed6c67677a78.tar.gz
rockbox-079d7fbb8b797c235dd7d4eb292aed6c67677a78.zip
Revert "PictureFlow: Add move callback for buflib allocations"
It's not needed as picture flow has it's own buffer. This reverts commit 9076b433d18b5db1a1987fe99ca7c70808f22b0e. Detailed explanation from Thomas Martiz (thanks!): buflib buffers can be passed to yielding functions just fine. Problems only arise if the are concurrent allocations, for example if two threads allocate from the same context simultaneously or if the callee does it's own allocations. This can't happen in the pictureflow case, it has it's own context and a single thread allocating from it. Therefore the problem isn't yield() itself, but possible concurrent buflib_alloc() calls that result from the thread switch. This is because compaction only ever happens on allocation (and not in a backgroud thread or so).
Diffstat (limited to 'apps/plugins/pictureflow')
-rw-r--r--apps/plugins/pictureflow/pictureflow.c20
1 files changed, 1 insertions, 19 deletions
diff --git a/apps/plugins/pictureflow/pictureflow.c b/apps/plugins/pictureflow/pictureflow.c
index afe108b294..53fede1c2c 100644
--- a/apps/plugins/pictureflow/pictureflow.c
+++ b/apps/plugins/pictureflow/pictureflow.c
@@ -443,18 +443,6 @@ static int track_list_visible_entries = 0;
443static int track_list_y; 443static int track_list_y;
444static int track_list_h; 444static int track_list_h;
445 445
446static int locked_buflib_handle;
447static int move_callback(int handle, void *current, void *new)
448{
449 (void)current; (void)new;
450 if (handle == locked_buflib_handle)
451 return BUFLIB_CB_CANNOT_MOVE;
452 return BUFLIB_CB_OK;
453}
454static struct buflib_callbacks pictureflow_ops = {
455 .move_callback = move_callback,
456};
457
458/* 446/*
459 Proposals for transitions: 447 Proposals for transitions:
460 448
@@ -1546,7 +1534,7 @@ static int read_pfraw(char* filename, int prio)
1546 1534
1547 int hid; 1535 int hid;
1548 do { 1536 do {
1549 hid = rb->buflib_alloc_ex(&buf_ctx, size, "PictureFlow", &pictureflow_ops); 1537 hid = rb->buflib_alloc(&buf_ctx, size);
1550 } while (hid < 0 && free_slide_prio(prio)); 1538 } while (hid < 0 && free_slide_prio(prio));
1551 1539
1552 if (hid < 0) { 1540 if (hid < 0) {
@@ -1556,7 +1544,6 @@ static int read_pfraw(char* filename, int prio)
1556 1544
1557 rb->yield(); /* allow audio to play when fast scrolling */ 1545 rb->yield(); /* allow audio to play when fast scrolling */
1558 struct dim *bm = rb->buflib_get_data(&buf_ctx, hid); 1546 struct dim *bm = rb->buflib_get_data(&buf_ctx, hid);
1559 locked_buflib_handle = hid;
1560 1547
1561 bm->width = bmph.width; 1548 bm->width = bmph.width;
1562 bm->height = bmph.height; 1549 bm->height = bmph.height;
@@ -1568,7 +1555,6 @@ static int read_pfraw(char* filename, int prio)
1568 rb->read( fh, data , sizeof( pix_t ) * bm->width ); 1555 rb->read( fh, data , sizeof( pix_t ) * bm->width );
1569 data += bm->width; 1556 data += bm->width;
1570 } 1557 }
1571 locked_buflib_handle = -1;
1572 rb->close( fh ); 1558 rb->close( fh );
1573 return hid; 1559 return hid;
1574} 1560}
@@ -1723,7 +1709,6 @@ static inline struct dim *get_slide(const int hid)
1723 struct dim *bmp; 1709 struct dim *bmp;
1724 1710
1725 bmp = rb->buflib_get_data(&buf_ctx, hid); 1711 bmp = rb->buflib_get_data(&buf_ctx, hid);
1726 locked_buflib_handle = hid;
1727 1712
1728 return bmp; 1713 return bmp;
1729} 1714}
@@ -2115,9 +2100,6 @@ static void render_all_slides(void)
2115 if (step != 0 && num_slides <= 2) /* fading out center slide */ 2100 if (step != 0 && num_slides <= 2) /* fading out center slide */
2116 alpha = (step > 0) ? 256 - fade / 2 : 128 + fade / 2; 2101 alpha = (step > 0) ? 256 - fade / 2 : 128 + fade / 2;
2117 render_slide(&center_slide, alpha); 2102 render_slide(&center_slide, alpha);
2118
2119 /* free up lock on last used slide */
2120 locked_buflib_handle = -1;
2121} 2103}
2122 2104
2123 2105