Get rid of update_screen

No longer needed.
This commit is contained in:
Kovid Goyal
2017-09-08 16:09:47 +05:30
parent f655112bda
commit c0593d9f1f
4 changed files with 9 additions and 24 deletions

View File

@@ -107,7 +107,7 @@ class Boss:
self.ui_timers = Timers()
self.child_monitor = ChildMonitor(
opts.repaint_delay / 1000.0, glfw_window.window_id(),
self.on_child_death, self.update_screen, self.ui_timers, self.render,
self.on_child_death, self.ui_timers, self.render,
DumpCommands(args) if args.dump_commands or args.dump_bytes else None)
set_boss(self)
self.current_font_size = opts.font_size
@@ -163,11 +163,6 @@ class Boss:
if w is not None:
w.on_child_death()
def update_screen(self, window_id):
w = self.window_id_map.get(window_id)
if w is not None:
w.update_screen()
def close_window(self, window=None):
if window is None:
window = self.active_window

View File

@@ -231,7 +231,6 @@ class CharGrid:
self.update_cell_data()
def update_cell_data(self, force_full_refresh=False):
is_dirty = self.screen.is_dirty()
cursor_changed, history_line_added_count = self.screen.update_cell_data(
addressof(self.main_sprite_map), force_full_refresh)
if self.scrolled_by:
@@ -240,8 +239,7 @@ class CharGrid:
addressof(self.main_sprite_map), self.scrolled_by, addressof(self.scroll_sprite_map))
data = self.scroll_sprite_map if self.scrolled_by else self.main_sprite_map
if is_dirty:
self.current_selection.clear()
self.current_selection.clear()
memmove(self.render_buf, data, sizeof(type(data)))
self.render_data = self.screen_geometry
self.render_buf_is_dirty = True
@@ -365,9 +363,9 @@ class CharGrid:
return s.text(self.screen.linebuf, self.screen.historybuf)
def prepare_for_render(self, cell_program):
if self.screen.is_dirty():
self.update_cell_data()
sg = self.render_data
if sg is None:
return
if self.vao_id is None:
self.vao_id = cell_program.create_sprite_map()
start, end = sel = self.current_selection.limits(self.scrolled_by, self.screen.lines, self.screen.columns)

View File

@@ -111,12 +111,12 @@ self_pipe(int fds[2]) {
static PyObject *
new(PyTypeObject *type, PyObject *args, PyObject UNUSED *kwds) {
ChildMonitor *self;
PyObject *dump_callback, *death_notify, *update_screen, *timers, *wid, *render_func;
PyObject *dump_callback, *death_notify, *timers, *wid, *render_func;
int ret;
double repaint_delay;
if (created) { PyErr_SetString(PyExc_RuntimeError, "Can have only a single ChildMonitor instance"); return NULL; }
if (!PyArg_ParseTuple(args, "dOOOOOO", &repaint_delay, &wid, &death_notify, &update_screen, &timers, &render_func, &dump_callback)) return NULL;
if (!PyArg_ParseTuple(args, "dOOOOO", &repaint_delay, &wid, &death_notify, &timers, &render_func, &dump_callback)) return NULL;
glfw_window_id = PyLong_AsVoidPtr(wid);
created = true;
if ((ret = pthread_mutex_init(&children_lock, NULL)) != 0) {
@@ -132,7 +132,6 @@ new(PyTypeObject *type, PyObject *args, PyObject UNUSED *kwds) {
self = (ChildMonitor *)type->tp_alloc(type, 0);
if (self == NULL) return PyErr_NoMemory();
self->death_notify = death_notify; Py_INCREF(death_notify);
self->update_screen = update_screen; Py_INCREF(self->update_screen);
self->render_func = render_func; Py_INCREF(self->render_func);
self->timers = (Timers*)timers; Py_INCREF(timers);
if (dump_callback != Py_None) {
@@ -152,7 +151,6 @@ dealloc(ChildMonitor* self) {
pthread_mutex_destroy(&children_lock);
Py_CLEAR(self->dump_callback);
Py_CLEAR(self->death_notify);
Py_CLEAR(self->update_screen);
Py_CLEAR(self->timers);
Py_CLEAR(self->render_func);
Py_TYPE(self)->tp_free((PyObject*)self);
@@ -266,7 +264,7 @@ shutdown(ChildMonitor *self) {
}
static inline bool
do_parse(ChildMonitor *self, Screen *screen, unsigned long child_id) {
do_parse(ChildMonitor *self, Screen *screen) {
bool updated = false;
screen_mutex(lock, read);
if (screen->read_buf_sz) {
@@ -277,9 +275,7 @@ do_parse(ChildMonitor *self, Screen *screen, unsigned long child_id) {
}
screen_mutex(unlock, read);
if (LIKELY(updated)) {
PyObject *t = PyObject_CallFunction(self->update_screen, "k", child_id);
if (t == NULL) PyErr_Print();
else Py_DECREF(t);
glfwPostEmptyEvent();
}
return updated;
}
@@ -326,7 +322,7 @@ parse_input(ChildMonitor *self) {
for (size_t i = 0; i < count; i++) {
if (!scratch[i].needs_removal) {
do_parse(self, scratch[i].screen, scratch[i].id);
do_parse(self, scratch[i].screen);
}
DECREF_CHILD(scratch[i]);
}

View File

@@ -133,10 +133,6 @@ class Window:
def use_utf8(self, on):
get_boss().child_monitor.set_iutf8(self.window_id, on)
def update_screen(self):
self.char_grid.update_cell_data()
glfw_post_empty_event()
def focus_changed(self, focused):
if focused:
if self.screen.focus_tracking_enabled: