mesa: Port errors.c to util/list.h instead of simple_list.
There is widespread consensus that simple_list should go away. This patch converts one more use to the modern kernel-style list. Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
This commit is contained in:
@@ -33,7 +33,7 @@
|
||||
#include "mtypes.h"
|
||||
#include "version.h"
|
||||
#include "util/hash_table.h"
|
||||
#include "util/simple_list.h"
|
||||
#include "util/list.h"
|
||||
|
||||
|
||||
static simple_mtx_t DynamicIDMutex = _SIMPLE_MTX_INITIALIZER_NP;
|
||||
@@ -45,7 +45,7 @@ static GLuint NextDynamicID = 1;
|
||||
*/
|
||||
struct gl_debug_element
|
||||
{
|
||||
struct simple_node link;
|
||||
struct list_head link;
|
||||
|
||||
GLuint ID;
|
||||
/* at which severity levels (mesa_debug_severity) is the message enabled */
|
||||
@@ -55,7 +55,7 @@ struct gl_debug_element
|
||||
|
||||
struct gl_debug_namespace
|
||||
{
|
||||
struct simple_node Elements;
|
||||
struct list_head Elements;
|
||||
GLbitfield DefaultState;
|
||||
};
|
||||
|
||||
@@ -250,7 +250,7 @@ debug_message_store(struct gl_debug_message *msg,
|
||||
static void
|
||||
debug_namespace_init(struct gl_debug_namespace *ns)
|
||||
{
|
||||
make_empty_list(&ns->Elements);
|
||||
list_inithead(&ns->Elements);
|
||||
|
||||
/* Enable all the messages with severity HIGH or MEDIUM by default */
|
||||
ns->DefaultState = (1 << MESA_DEBUG_SEVERITY_MEDIUM ) |
|
||||
@@ -261,24 +261,18 @@ debug_namespace_init(struct gl_debug_namespace *ns)
|
||||
static void
|
||||
debug_namespace_clear(struct gl_debug_namespace *ns)
|
||||
{
|
||||
struct simple_node *node, *tmp;
|
||||
|
||||
foreach_s(node, tmp, &ns->Elements)
|
||||
free(node);
|
||||
list_for_each_entry_safe(struct gl_debug_element, elem, &ns->Elements, link)
|
||||
free(elem);
|
||||
}
|
||||
|
||||
static bool
|
||||
debug_namespace_copy(struct gl_debug_namespace *dst,
|
||||
const struct gl_debug_namespace *src)
|
||||
{
|
||||
struct simple_node *node;
|
||||
|
||||
dst->DefaultState = src->DefaultState;
|
||||
|
||||
make_empty_list(&dst->Elements);
|
||||
foreach(node, &src->Elements) {
|
||||
const struct gl_debug_element *elem =
|
||||
(const struct gl_debug_element *) node;
|
||||
list_inithead(&dst->Elements);
|
||||
list_for_each_entry(struct gl_debug_element, elem, &src->Elements, link) {
|
||||
struct gl_debug_element *copy;
|
||||
|
||||
copy = malloc(sizeof(*copy));
|
||||
@@ -289,7 +283,7 @@ debug_namespace_copy(struct gl_debug_namespace *dst,
|
||||
|
||||
copy->ID = elem->ID;
|
||||
copy->State = elem->State;
|
||||
insert_at_tail(&dst->Elements, ©->link);
|
||||
list_addtail(©->link, &dst->Elements);
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -305,11 +299,9 @@ debug_namespace_set(struct gl_debug_namespace *ns,
|
||||
const uint32_t state = (enabled) ?
|
||||
((1 << MESA_DEBUG_SEVERITY_COUNT) - 1) : 0;
|
||||
struct gl_debug_element *elem = NULL;
|
||||
struct simple_node *node;
|
||||
|
||||
/* find the element */
|
||||
foreach(node, &ns->Elements) {
|
||||
struct gl_debug_element *tmp = (struct gl_debug_element *) node;
|
||||
list_for_each_entry(struct gl_debug_element, tmp, &ns->Elements, link) {
|
||||
if (tmp->ID == id) {
|
||||
elem = tmp;
|
||||
break;
|
||||
@@ -319,7 +311,7 @@ debug_namespace_set(struct gl_debug_namespace *ns,
|
||||
/* we do not need the element if it has the default state */
|
||||
if (ns->DefaultState == state) {
|
||||
if (elem) {
|
||||
remove_from_list(&elem->link);
|
||||
list_del(&elem->link);
|
||||
free(elem);
|
||||
}
|
||||
return true;
|
||||
@@ -331,7 +323,7 @@ debug_namespace_set(struct gl_debug_namespace *ns,
|
||||
return false;
|
||||
|
||||
elem->ID = id;
|
||||
insert_at_tail(&ns->Elements, &elem->link);
|
||||
list_addtail(&elem->link, &ns->Elements);
|
||||
}
|
||||
|
||||
elem->State = state;
|
||||
@@ -349,14 +341,13 @@ debug_namespace_set_all(struct gl_debug_namespace *ns,
|
||||
enum mesa_debug_severity severity,
|
||||
bool enabled)
|
||||
{
|
||||
struct simple_node *node, *tmp;
|
||||
uint32_t mask, val;
|
||||
|
||||
/* set all elements to the same state */
|
||||
if (severity == MESA_DEBUG_SEVERITY_COUNT) {
|
||||
ns->DefaultState = (enabled) ? ((1 << severity) - 1) : 0;
|
||||
debug_namespace_clear(ns);
|
||||
make_empty_list(&ns->Elements);
|
||||
list_inithead(&ns->Elements);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -365,13 +356,12 @@ debug_namespace_set_all(struct gl_debug_namespace *ns,
|
||||
|
||||
ns->DefaultState = (ns->DefaultState & ~mask) | val;
|
||||
|
||||
foreach_s(node, tmp, &ns->Elements) {
|
||||
struct gl_debug_element *elem = (struct gl_debug_element *) node;
|
||||
|
||||
list_for_each_entry_safe(struct gl_debug_element, elem, &ns->Elements,
|
||||
link) {
|
||||
elem->State = (elem->State & ~mask) | val;
|
||||
if (elem->State == ns->DefaultState) {
|
||||
remove_from_list(node);
|
||||
free(node);
|
||||
list_del(&elem->link);
|
||||
free(elem);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -383,13 +373,10 @@ static bool
|
||||
debug_namespace_get(const struct gl_debug_namespace *ns, GLuint id,
|
||||
enum mesa_debug_severity severity)
|
||||
{
|
||||
struct simple_node *node;
|
||||
uint32_t state;
|
||||
|
||||
state = ns->DefaultState;
|
||||
foreach(node, &ns->Elements) {
|
||||
struct gl_debug_element *elem = (struct gl_debug_element *) node;
|
||||
|
||||
list_for_each_entry(struct gl_debug_element, elem, &ns->Elements, link) {
|
||||
if (elem->ID == id) {
|
||||
state = elem->State;
|
||||
break;
|
||||
|
Reference in New Issue
Block a user