Revision: 77441
http://sourceforge.net/p/brlcad/code/77441
Author: brlcad
Date: 2020-10-15 06:14:30 +0000 (Thu, 15 Oct 2020)
Log Message:
-----------
remove nu from the list of priorities since it's a special built-in. it needs
to be specifically considered anyways, so removing can make logic
inconsistencies more obvious (e.g., dm_list_types() failed to return it)
Modified Paths:
--------------
brlcad/trunk/src/libdm/dm_plugins.cpp
Modified: brlcad/trunk/src/libdm/dm_plugins.cpp
===================================================================
--- brlcad/trunk/src/libdm/dm_plugins.cpp 2020-10-15 05:39:44 UTC (rev
77440)
+++ brlcad/trunk/src/libdm/dm_plugins.cpp 2020-10-15 06:14:30 UTC (rev
77441)
@@ -48,6 +48,7 @@
if (BU_STR_EQUIV(type, "nu") || BU_STR_EQUIV(type, "null")) {
return dm_null.i->dm_open(interp, argc, argv);
}
+
std::map<std::string, const struct dm *> *dmb = (std::map<std::string,
const struct dm *> *)dm_backends;
std::string key(type);
std::transform(key.begin(), key.end(), key.begin(), [](unsigned char c) {
return std::tolower(c); });
@@ -55,6 +56,7 @@
if (d_it == dmb->end()) {
return DM_NULL;
}
+
const struct dm *d = d_it->second;
struct dm *dmp = d->i->dm_open(interp, argc, argv);
return dmp;
@@ -65,8 +67,10 @@
dm_have_graphics()
{
int ret = 0;
+
std::map<std::string, const struct dm *> *dmb = (std::map<std::string,
const struct dm *> *)dm_backends;
std::map<std::string, const struct dm *>::iterator d_it;
+
for (d_it = dmb->begin(); d_it != dmb->end(); d_it++) {
std::string key = d_it->first;
const struct dm *d = d_it->second;
@@ -75,6 +79,7 @@
break;
}
}
+
return ret;
}
@@ -83,8 +88,10 @@
dm_graphics_system(const char *dmtype)
{
const char *ret = NULL;
+
std::map<std::string, const struct dm *> *dmb = (std::map<std::string,
const struct dm *> *)dm_backends;
std::map<std::string, const struct dm *>::iterator d_it;
+
for (d_it = dmb->begin(); d_it != dmb->end(); d_it++) {
std::string key = d_it->first;
const struct dm *d = d_it->second;
@@ -94,11 +101,12 @@
break;
}
}
+
return ret;
}
-static const char *priority_list[] = {"osgl", "wgl", "ogl", "X", "tk", "nu",
NULL};
+static const char *priority_list[] = {"osgl", "wgl", "ogl", "X", "tk", NULL};
extern "C" void
@@ -115,7 +123,7 @@
int i = 0;
const char *b = priority_list[i];
- while (!BU_STR_EQUAL(b, "nu")) {
+ while (b) {
std::string key(b);
std::transform(key.begin(), key.end(), key.begin(), [](unsigned char c)
{ return std::tolower(c); });
std::map<std::string, const struct dm *>::iterator d_it =
dmb->find(key);
@@ -139,23 +147,26 @@
extern "C" int
dm_validXType(const char *dpy_string, const char *name)
{
- if (BU_STR_EQUIV(name, "nu")) {
+ if (BU_STR_EQUIV(name, "nu") || BU_STR_EQUIV(name, "null")) {
return 1;
}
- if (BU_STR_EQUIV(name, "null")) {
- return 1;
- }
+
std::map<std::string, const struct dm *> *dmb = (std::map<std::string,
const struct dm *> *)dm_backends;
std::string key(name);
std::transform(key.begin(), key.end(), key.begin(), [](unsigned char c) {
return std::tolower(c); });
std::map<std::string, const struct dm *>::iterator d_it = dmb->find(key);
+
if (d_it == dmb->end()) {
return 0;
}
+
const struct dm *d = d_it->second;
int is_valid = d->i->dm_viable(dpy_string);
+
return is_valid;
}
+
+
extern "C" int
dm_valid_type(const char *name, const char *dpy_string)
{
@@ -181,10 +192,12 @@
int i = 0;
const char *b = priority_list[i];
- while (!BU_STR_EQUAL(b, "nu")) {
+
+ while (b) {
std::string key(b);
std::transform(key.begin(), key.end(), key.begin(), [](unsigned char c)
{ return std::tolower(c); });
std::map<std::string, const struct dm *>::iterator d_it =
dmb->find(key);
+
if (d_it == dmb->end()) {
i++;
b = priority_list[i];
@@ -198,8 +211,10 @@
i++;
b = priority_list[i];
}
+ if (!ret)
+ ret = "nu";
- return (ret) ? ret : b;
+ return ret;
}
@@ -220,10 +235,12 @@
int i = 0;
const char *b = priority_list[i];
- while (!BU_STR_EQUAL(b, "nu")) {
+
+ while (b) {
std::string key(b);
std::transform(key.begin(), key.end(), key.begin(), [](unsigned char c)
{ return std::tolower(c); });
std::map<std::string, const struct dm *>::iterator d_it =
dmb->find(key);
+
if (d_it == dmb->end()) {
i++;
b = priority_list[i];
@@ -231,8 +248,10 @@
}
ret = b;
}
+ if (!ret)
+ ret = "nu";
- return (ret) ? ret : b;
+ return ret;
}
@@ -241,8 +260,10 @@
{
if (!ifp)
return;
+
std::map<std::string, const struct fb *> *fmb = (std::map<std::string,
const struct fb *> *)fb_backends;
std::map<std::string, const struct fb *>::iterator f_it;
+
for (f_it = fmb->begin(); f_it != fmb->end(); f_it++) {
const struct fb *f = f_it->second;
if (bu_strncmp(interface_type, f->i->if_name+5,
strlen(interface_type)) == 0) {
@@ -259,6 +280,7 @@
{
std::map<std::string, const struct fb *> *fmb = (std::map<std::string,
const struct fb *> *)fb_backends;
std::map<std::string, const struct fb *>::iterator f_it;
+
for (f_it = fmb->begin(); f_it != fmb->end(); f_it++) {
const struct fb *f = f_it->second;
if (magic == f->i->type_magic) {
@@ -278,6 +300,7 @@
std::map<std::string, const struct fb *> *fmb = (std::map<std::string,
const struct fb *> *)fb_backends;
std::map<std::string, const struct fb *>::iterator f_it;
+
for (f_it = fmb->begin(); f_it != fmb->end(); f_it++) {
const struct fb *f = f_it->second;
if (fb_p->magic == f->i->type_magic) {
@@ -285,6 +308,7 @@
return;
}
}
+
return;
}
@@ -318,6 +342,7 @@
struct fb *ifp;
int i = 0;
const char *b;
+
std::map<std::string, const struct fb *> *fmb = (std::map<std::string,
const struct fb *> *)fb_backends;
std::map<std::string, const struct fb *>::iterator f_it;
@@ -341,7 +366,7 @@
snprintf(device, sizeof(device), "/dev/%s", priority_list[i]);
b = device;
- while (!BU_STR_EQUAL(b, "nu")) {
+ while (priority_list[i]) {
f_it = fmb->find(std::string(b));
if (f_it == fmb->end()) {
i++;
@@ -446,6 +471,7 @@
{
std::map<std::string, const struct fb *> *fmb = (std::map<std::string,
const struct fb *> *)fb_backends;
std::map<std::string, const struct fb *>::iterator f_it;
+
for (f_it = fmb->begin(); f_it != fmb->end(); f_it++) {
const struct fb *f = f_it->second;
fb_log("%-12s %s\n", f->i->if_name, f->i->if_type);
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits