2 * Copyright (C) 2003-2010 The Music Player Daemon Project
3 * http://www.musicpd.org
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
29 * Allocates a new #page object, without filling the data element.
34 struct page
*page
= g_malloc(sizeof(*page
) + size
-
45 page_new_copy(const void *data
, size_t size
)
47 struct page
*page
= page_new(size
);
51 memcpy(page
->data
, data
, size
);
56 page_new_concat(const struct page
*a
, const struct page
*b
)
58 struct page
*page
= page_new(a
->size
+ b
->size
);
60 memcpy(page
->data
, a
->data
, a
->size
);
61 memcpy(page
->data
+ a
->size
, b
->data
, b
->size
);
67 page_ref(struct page
*page
)
69 g_atomic_int_inc(&page
->ref
);
73 page_free(struct page
*page
)
75 assert(page
->ref
== 0);
81 page_unref(struct page
*page
)
83 bool unused
= g_atomic_int_dec_and_test(&page
->ref
);