[grilo] core: Adjust page_size to max_page_size



commit f5eaf272cae888ee3b6840052f0ab7251c0f3097
Author: Juan A. Suarez Romero <jasuarez igalia com>
Date:   Tue Jul 9 13:07:48 2013 +0000

    core: Adjust page_size to max_page_size
    
    If page_size is NULL, then instead of computing the optimal page size, use
    max_page_size as the optimal page_size.
    
    This allows to use the function with those services that do not allow to
    specify the page size.

 src/grl-util.c |   29 ++++++++++++++++++++---------
 1 files changed, 20 insertions(+), 9 deletions(-)
---
diff --git a/src/grl-util.c b/src/grl-util.c
index ad5ee4d..27afbc8 100644
--- a/src/grl-util.c
+++ b/src/grl-util.c
@@ -53,6 +53,9 @@
  * size, then more requests to services might be needed. But still page size
  * will be an optimal value.
  *
+ * If @page_size is @NULL, then page size will be @max_page_size. If the later
+ * is also 0, then page size will be #G_MAXUINT.
+ *
  * Since: 0.1.6
  **/
 void grl_paging_translate (guint skip,
@@ -65,20 +68,28 @@ void grl_paging_translate (guint skip,
   gulong _page_size;
   gulong last_element;
 
-  if (skip < count) {
-    _page_size = skip + count;
+  if (!page_size) {
     if (max_page_size > 0) {
-      _page_size = CLAMP (_page_size, 0, max_page_size);
+      _page_size = max_page_size;
+    } else {
+      _page_size = G_MAXUINT;
     }
   } else {
-    _page_size = count;
-    last_element = skip + count - 1;
-    while (skip/_page_size != last_element/_page_size &&
-           (max_page_size == 0 || _page_size < max_page_size)) {
-      _page_size++;
+    if (skip < count) {
+      _page_size = skip + count;
+      if (max_page_size > 0) {
+        _page_size = CLAMP (_page_size, 0, max_page_size);
+      }
+    } else {
+      _page_size = count;
+      last_element = skip + count - 1;
+      while (skip/_page_size != last_element/_page_size &&
+             (max_page_size == 0 || _page_size < max_page_size)) {
+        _page_size++;
+      }
     }
+    _page_size = CLAMP (_page_size, 0, G_MAXUINT);
   }
-  _page_size = CLAMP (_page_size, 0, G_MAXUINT);
 
   if (page_size) {
     *page_size = _page_size;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]