tImprove parameters handling - surf - customized build of surf, the suckless webkit browser
 (HTM) git clone git://src.adamsgaard.dk/surf
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 745a319bafd6ff0702c37d0333142ca18e801a4a
 (DIR) parent b1154347205201351be6b0d027e86f16f709599b
 (HTM) Author: Quentin Rameau <quinq@fifth.space>
       Date:   Tue,  9 May 2017 14:45:24 +0200
       
       Improve parameters handling
       
       There's no need to reload all parameters each time a new url is loaded,
       instead set only custom parameters and restore those to defaults when
       needed.
       
       Diffstat:
         M surf.c                              |      21 +++++++++++++++++----
       
       1 file changed, 17 insertions(+), 4 deletions(-)
       ---
 (DIR) diff --git a/surf.c b/surf.c
       t@@ -636,18 +636,32 @@ cookiepolicy_set(const WebKitCookieAcceptPolicy p)
        void
        seturiparameters(Client *c, const char *uri)
        {
       +        Parameter *newconfig = NULL;
                int i;
        
                for (i = 0; i < LENGTH(uriparams); ++i) {
                        if (uriparams[i].uri &&
                            !regexec(&(uriparams[i].re), uri, 0, NULL, 0)) {
       -                        curconfig = uriparams[i].config;
       +                        newconfig = uriparams[i].config;
                                break;
                        }
                }
        
       -        for (i = 0; i < ParameterLast; ++i)
       -                setparameter(c, 0, i, &curconfig[i].val);
       +        if (!newconfig)
       +                newconfig = defconfig;
       +        if (newconfig == curconfig)
       +                return;
       +
       +        for (i = 0; i < ParameterLast; ++i) {
       +                if (defconfig[i].force)
       +                        continue;
       +                if (newconfig[i].force)
       +                        setparameter(c, 0, i, &newconfig[i].val);
       +                else if (curconfig[i].force)
       +                        setparameter(c, 0, i, &defconfig[i].val);
       +        }
       +
       +        curconfig = newconfig;
        }
        
        void
       t@@ -1350,7 +1364,6 @@ loadchanged(WebKitWebView *v, WebKitLoadEvent e, Client *c)
        
                switch (e) {
                case WEBKIT_LOAD_STARTED:
       -                curconfig = defconfig;
                        setatom(c, AtomUri, title);
                        c->title = title;
                        c->https = c->insecure = 0;