LCOV - code coverage report
Current view: top level - gfx/cairo/cairo/src - cairo-freed-pool.c (source / functions) Hit Total Coverage
Test: output.info Lines: 0 20 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 3 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: c; tab-width: 8; c-basic-offset: 4; indent-tabs-mode: t; -*- */
       2             : /* cairo - a vector graphics library with display and print output
       3             :  *
       4             :  * Copyright © 2009 Chris Wilson
       5             :  *
       6             :  * This library is free software; you can redistribute it and/or
       7             :  * modify it either under the terms of the GNU Lesser General Public
       8             :  * License version 2.1 as published by the Free Software Foundation
       9             :  * (the "LGPL") or, at your option, under the terms of the Mozilla
      10             :  * Public License Version 1.1 (the "MPL"). If you do not alter this
      11             :  * notice, a recipient may use your version of this file under either
      12             :  * the MPL or the LGPL.
      13             :  *
      14             :  * You should have received a copy of the LGPL along with this library
      15             :  * in the file COPYING-LGPL-2.1; if not, write to the Free Software
      16             :  * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA
      17             :  * You should have received a copy of the MPL along with this library
      18             :  * in the file COPYING-MPL-1.1
      19             :  *
      20             :  * The contents of this file are subject to the Mozilla Public License
      21             :  * Version 1.1 (the "License"); you may not use this file except in
      22             :  * compliance with the License. You may obtain a copy of the License at
      23             :  * http://www.mozilla.org/MPL/
      24             :  *
      25             :  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
      26             :  * OF ANY KIND, either express or implied. See the LGPL or the MPL for
      27             :  * the specific language governing rights and limitations.
      28             :  *
      29             :  * The Original Code is the cairo graphics library.
      30             :  *
      31             :  * The Initial Developer of the Original Code is University of Southern
      32             :  * California.
      33             :  *
      34             :  * Contributor(s):
      35             :  *      Chris Wilson <chris@chris-wilson.co.uk>
      36             :  */
      37             : 
      38             : #include "cairoint.h"
      39             : 
      40             : #include "cairo-freed-pool-private.h"
      41             : 
      42             : #if HAS_FREED_POOL
      43             : 
      44             : void *
      45           0 : _freed_pool_get_search (freed_pool_t *pool)
      46             : {
      47             :     void *ptr;
      48             :     int i;
      49             : 
      50           0 :     for (i = ARRAY_LENGTH (pool->pool); i--;) {
      51           0 :         ptr = _atomic_fetch (&pool->pool[i]);
      52           0 :         if (ptr != NULL) {
      53           0 :             _cairo_atomic_int_set_relaxed (&pool->top, i);
      54           0 :             return ptr;
      55             :         }
      56             :     }
      57             : 
      58             :     /* empty */
      59           0 :     _cairo_atomic_int_set_relaxed (&pool->top, 0);
      60           0 :     return NULL;
      61             : }
      62             : 
      63             : void
      64           0 : _freed_pool_put_search (freed_pool_t *pool, void *ptr)
      65             : {
      66             :     int i;
      67             : 
      68           0 :     for (i = 0; i < ARRAY_LENGTH (pool->pool); i++) {
      69           0 :         if (_atomic_store (&pool->pool[i], ptr)) {
      70           0 :             _cairo_atomic_int_set_relaxed (&pool->top, i + 1);
      71           0 :             return;
      72             :         }
      73             :     }
      74             : 
      75             :     /* full */
      76           0 :     _cairo_atomic_int_set_relaxed (&pool->top, i);
      77           0 :     free (ptr);
      78             : }
      79             : 
      80             : void
      81           0 : _freed_pool_reset (freed_pool_t *pool)
      82             : {
      83             :     int i;
      84             : 
      85           0 :     for (i = 0; i < ARRAY_LENGTH (pool->pool); i++) {
      86           0 :         free (pool->pool[i]);
      87           0 :         pool->pool[i] = NULL;
      88             :     }
      89             : 
      90           0 :     _cairo_atomic_int_set_relaxed (&pool->top, 0);
      91             : }
      92             : 
      93             : #endif

Generated by: LCOV version 1.13