summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAilin Nemui <ailin@esf51.localdomain>2014-06-08 02:18:57 +0200
committerAilin Nemui <ailin@esf51.localdomain>2014-06-15 23:37:13 +0200
commita4c62a3fee26761ff909e7fb01f372484db3057f (patch)
tree76fee293501c3125d094e234db69d541e63e3d01
parentd1e60a3b8f8a154a33e935279a6aeb356686efda (diff)
downloadirssi-a4c62a3fee26761ff909e7fb01f372484db3057f.zip
speed up window_item_find by interning name and removing call to channel_find
-rw-r--r--src/core/channel-rec.h1
-rw-r--r--src/core/query-rec.h1
-rw-r--r--src/core/window-item-rec.h2
-rw-r--r--src/fe-common/core/window-items.c10
4 files changed, 3 insertions, 11 deletions
diff --git a/src/core/channel-rec.h b/src/core/channel-rec.h
index 7b806ca4..f3ec5f8d 100644
--- a/src/core/channel-rec.h
+++ b/src/core/channel-rec.h
@@ -2,7 +2,6 @@
#include "window-item-rec.h"
-char *name;
char *topic;
char *topic_by;
time_t topic_time;
diff --git a/src/core/query-rec.h b/src/core/query-rec.h
index ddb85ba4..fc08d2ef 100644
--- a/src/core/query-rec.h
+++ b/src/core/query-rec.h
@@ -2,7 +2,6 @@
#include "window-item-rec.h"
-char *name;
char *address;
char *server_tag;
time_t last_unread_msg;
diff --git a/src/core/window-item-rec.h b/src/core/window-item-rec.h
index d7b6f7db..7bf5ba5f 100644
--- a/src/core/window-item-rec.h
+++ b/src/core/window-item-rec.h
@@ -7,7 +7,7 @@ GHashTable *module_data;
void *window;
STRUCT_SERVER_REC *server;
char *visible_name;
-
+char *name;
time_t createtime;
int data_level;
char *hilight_color;
diff --git a/src/fe-common/core/window-items.c b/src/fe-common/core/window-items.c
index 303a80db..c29db9e6 100644
--- a/src/fe-common/core/window-items.c
+++ b/src/fe-common/core/window-items.c
@@ -218,16 +218,10 @@ WI_ITEM_REC *window_item_find_window(WINDOW_REC *window,
WI_ITEM_REC *rec = tmp->data;
if ((server == NULL || rec->server == server) &&
- g_ascii_strcasecmp(name, rec->visible_name) == 0)
+ (g_ascii_strcasecmp(name, rec->visible_name) == 0
+ || (rec->name && g_ascii_strcasecmp(name, rec->name) == 0)))
return rec;
}
-
- /* try with channel name too, it's not necessarily
- same as visible_name (!channels) */
- channel = channel_find(server, name);
- if (channel != NULL && window_item_window(channel) == window)
- return (WI_ITEM_REC *) channel;
-
return NULL;
}