Gautam Iyer writes: > > Hi Jehan, > > Maybe. What needs to be kept in mind are the following: > > 1. The size is only about 4k. If the amount of code required to deal > with a dynamic buffer here is comparable then it is probably not > worth it. > > 2. As far as I remember, the input buffer grows when needed, but > does not shrink when too big. This should of course be avoided. > > Given the small size of these arrays, and the short amount of developer > resources we have perhaps it would be better to leave these as static. > I'd go so far as to suggesting we convert the v_buffer's to (small) > static arrays... >
Ok. Obviously it is not really prioritary, you are right. I will see if it is worth it. But I am not sure that making v_buffer static as well is a good idea. > > If you're willing to implement it, it should improve Mrxvt's memory > usage. It would also be good to add some code reducing the size of > v_buffer when it's too big, > There is already some code for v_buffer. In rxvt_tt_write, from command.c, function which writes data in this buffer, at the end of the function: if the free space in the physical buffer is 8 times greater than MAX_PTY_WRITE (which equals 128 in our code and is the maximum of bytes we will write in one time in the real child's file descriptor from this buffer), then we reallocate the buffer to the smaller multiple of MAX_PTY_WRITE which can contain the current data. So here this is not about proportional size of the real data compared to the buffer size, but about the empty size compared to some given value... > > Re-allocing here would be totally OK. A new tab is created very > infrequently (as opposed to typing / reading data). So a rather 'stupid' > realloc every time a new tab is created / closed should be OK. > I will consider this so. :-) Anyway my conclusion of this is that "I will see" and then I will tell you. :-) But I have one last (related) point: this is about naming. Would you care if I try to rename some of the variables (when it is not too difficult, or really worth it)? For instance here, we have 2 variables which are like "symetric" (one is the output, the other the input of the same fd) and here is the naming: - The start of the physical buffer is v_buffer on one hand, cmdbuf_base on the other. - The start of real data is v_buffstr and cmdbuf_ptr. - The end of data is v_bufptr (notice that "ptr" was used to indicate the beginning for cmdbuf, and here the end!) and cmdbuf_endp. - The end of physical buffer is v_bufend (and there is no end for cmdbuf as it is static, so always cmbuf_base + BUFSIZ). This is absolutely illogical and unconsistant, so pretty perturbating. 1/ The base name: v_buf and cmdbuf. I am sure there has been a reason (probably a technical one, which is not the best way I think, because technics can change with time, but notions less) the first time it was named. But now when I read the code. Even though I know it well enough, I am still unsure sometimes and check which one is which one. I think a name more "functional"/meaningful would help better developpers. Something simple as "input_buffer" or "output_buffer", or smaller if you prefer: inbuf and outbuf. 2/ The suffixes should be consistant. Like "_base" for the physical buffer is ok; and "_start" maybe for the beginning of data? Or maybe _data, or even stay with _str or _ptr if you prefer (as long as we stay consistent); _end is good for end of data; and for end of buffer, I don't know, but maybe could it be replaced by the buffer's size (we never need a pointer to the end of the buffer as nothing is allocated there anyway! But at the opposite we often need the size of the buffer and we calculate each time the end minus the start. So let's avoid useless calculation...). Change these is really not difficult because it can be done by a simple string exchange in all files (and they are not used so much anyway) and some basic checks. But I think it can be very good for the understanding of code for further devs. Thanks. Jehan ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Materm-devel mailing list Materm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/materm-devel mrxvt home page: http://materm.sourceforge.net