xpra icon
Bug tracker and wiki

This bug tracker and wiki are being discontinued
please use https://github.com/Xpra-org/xpra instead.


Ticket #2341: server-start-debug-mainloop.patch

File server-start-debug-mainloop.patch, 4.4 KB (added by Antoine Martin, 22 months ago)

shows that the main loop startup is not slow because of anything we do

  • xpra/gtk_common/gobject_compat.py

     
    114114    import glib                                     #@UnresolvedImport
    115115    glib.threads_init()
    116116    return glib
     117hooked = False
    117118def import_glib():
    118     return _try_import(import_glib3, import_glib2)
     119    global hooked
     120    glib = _try_import(import_glib3, import_glib2)
     121    if not hooked:
     122        hooked = True
     123        saved_idle_add = glib.idle_add
     124        saved_timeout_add = glib.idle_add
     125        def idle_add(*args, **kwargs):
     126            from xpra.util import get_util_logger
     127            get_util_logger().info("idle_add(%s, %s)", args, kwargs)
     128            return saved_idle_add(*args, **kwargs)
     129        def timeout_add(*args, **kwargs):
     130            from xpra.util import get_util_logger
     131            get_util_logger().info("timeout_add(%s, %s)", args, kwargs)
     132            return saved_timeout_add(*args, **kwargs)
     133        glib.idle_add = idle_add
     134        glib.idle_add = timeout_add
     135    return glib
    119136
    120137def import_gtk2():
    121138    import pygtk                                    #@UnresolvedImport
  • xpra/server/gtk_server_base.py

     
    9494
    9595
    9696    def do_run(self):
     97        log.info("do_run() 0")
    9798        if server_features.windows:
    9899            display = display_get_default()
    99100            i=0
     
    102103                screen.connect("size-changed", self._screen_size_changed)
    103104                screen.connect("monitors-changed", self._monitors_changed)
    104105                i += 1
     106        log.info("do_run() 1")
    105107        gtk_main_quit_on_fatal_exceptions_enable()
    106108        log("do_run() calling %s", gtk_main)
     109        log.info("do_run() 2")
    107110        gtk_main()
    108111        log("do_run() end of gtk.main()")
    109112
  • xpra/server/server_core.py

     
    405405    def run(self):
    406406        self.install_signal_handlers(self.signal_quit)
    407407        def start_ready_callbacks():
     408            log.info("start_ready_callbacks 0")
    408409            for x in self._when_ready:
    409410                try:
    410411                    x()
     
    413414                    log.error("Error on server start ready callback '%s':", x)
    414415                    log.error(" %s", e)
    415416                    del e
     417            log.info("start_ready_callbacks 1")
    416418        self.idle_add(start_ready_callbacks)
    417419        self.idle_add(self.reset_server_timeout)
    418420        self.idle_add(self.server_is_ready)
     
    911913
    912914    def add_listen_socket(self, socktype, sock):
    913915        info = self.socket_info.get(sock)
    914         netlog("add_listen_socket(%s, %s) info=%s", socktype, sock, info)
     916        netlog.info("add_listen_socket(%s, %s) info=%s", socktype, sock, info)
    915917        try:
    916918            #ugly that we have different ways of starting sockets,
    917919            #TODO: abstract this into the socket class
     
    937939            netlog("add_listen_socket(%s, %s)", socktype, sock, exc_info=True)
    938940            netlog.error("Error: failed to listen on %s socket %s:", socktype, info or sock)
    939941            netlog.error(" %s", e)
     942        netlog.info("add_listen_socket(%s, %s) done", socktype, sock)
    940943
    941944    def _new_connection(self, listener, *args):
    942945        """
     
    19011904        self.cancel_upgrade_to_rfb_timer(proto)
    19021905
    19031906    def reset_server_timeout(self, reschedule=True):
    1904         timeoutlog("reset_server_timeout(%s) server_idle_timeout=%s, server_idle_timer=%s",
     1907        timeoutlog.info("reset_server_timeout(%s) server_idle_timeout=%s, server_idle_timer=%s",
    19051908                   reschedule, self.server_idle_timeout, self.server_idle_timer)
    19061909        if self.server_idle_timeout<=0:
    19071910            return
     
    19101913            self.server_idle_timer = None
    19111914        if reschedule:
    19121915            self.server_idle_timer = self.timeout_add(self.server_idle_timeout*1000, self.server_idle_timedout)
     1916        timeoutlog.info("reset_server_timeout() done")
    19131917
    19141918    def server_idle_timedout(self):
    19151919        timeoutlog.info("No valid client connections for %s seconds, exiting the server", self.server_idle_timeout)