Opened 7 years ago

Last modified 7 years ago

#179 accepted defect

avoid threaded code as much as possible

Reported by: Antoine Martin Owned by: Antoine Martin
Priority: minor Milestone: 1.0
Component: Android Keywords:
Cc:

Description

We should be using callbacks and twisted_exec to avoid both blocking and the need for threading.

Threaded code is more complex, requires locking and often causes bugs.

As of r4536 (after improvements in r4635, r4631, etc), here are the remaining occurrences of threaded code that should be converted/improved:

  • applet / client_base threaded_start - messy..
  • controller:
    • threaded_ready
    • capture_display
    • do_shadow_session
    • reload_server_start_menu
  • quick_connect.validate: slow socket check should use twisted (low priority)
  • version_check: slow - safe via ask(), maybe we should use twisted for downloading the data? (low priority)
  • FS_Client_Helper (currently unused - low priority)

The following occurrences have been verified or fixed already:

  • controller: open_file
  • server_line_connection.do_send_bytes
  • server_util_base.start_read_from_log must use a thread as it may well be slow/long due to I/O and callbacks: process_log_data is now safe and process_log_line (many instances) has been verified
  • local_named_pipe (must run in its own thread?)

In progress / pending:

  • gstreamer_util.exec_launch_wrapper: should use twisted_exec

Change History (5)

comment:1 Changed 7 years ago by Antoine Martin

Status: newaccepted

r4637 removes the gdk pixbuf calls from load_server_start_menu and r4638 takes advantage of this new code to give more icon_names to the client so it has more chances of doing a successful icon lookup

comment:2 Changed 7 years ago by Antoine Martin

r4639 takes care of do_shadow_session and fixes do_open_file

comment:3 Changed 7 years ago by Antoine Martin

r4641 takes care of gstreamer_util.exec_launch_wrapper

comment:4 Changed 7 years ago by Antoine Martin

r4642 does capture_display without using threading by default (which was causing problems with gtk)

comment:5 Changed 7 years ago by Antoine Martin

Milestone: 1.0
Priority: majorminor

r4648 fixes applet / client_base

r4649 fixes controller startup

r4650 fixes X11 display/property access

Note: See TracTickets for help on using tickets.