Giter Club home page Giter Club logo

scroom's People

Contributors

adrian5 avatar aidan-gallagher avatar aminya avatar arminzahedani avatar arnemertz avatar avitase avatar caellian avatar ddalcino avatar dk949 avatar eaglefly-nl avatar hadrabap avatar hafklin avatar jellebootsma avatar joostvanpinxten avatar kadirmarangoz avatar kees-jan avatar kees-jan-dijkzeul-tfs avatar lefticus avatar patrickelectric avatar paulbendixen avatar ralphsteinhagen avatar reikichan avatar rickdejager avatar roanh avatar saimen avatar thoxsam avatar tobiasvanelk avatar toppdev avatar valerioformato avatar vittorioromeo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

scroom's Issues

Drop 8.04 support

  • Remove checks from configure script
  • Remove defines from code
  • Remove old-style futures from configure.ac
  • Remove old-style futures from code
  • Remove references to old-style futures from Threadpool
  • Remove support from packaging
  • Possibly update debian standards version and stuff
  • Possibly migrate to Gtk3 (see #4)
  • Remove hardy packages from repository
  • Remove local container
  • Remove local package archive
  • Remove local pbuilder image
  • Convert glade file to new buildxml stuff
  • ...

Configure script issues

I ran into missing (dev) libs. see my run below.


 Libtool library used but `LIBTOOL' is undefined
plugins/tiff/src/Makefile.am:3:   The usual way to define `LIBTOOL' is to add `LT_INIT'
plugins/tiff/src/Makefile.am:3:   to `configure.ac' and run `aclocal' and `autoconf' again.
plugins/tiff/src/Makefile.am:3:   If `LT_INIT' is in `configure.ac', make sure
plugins/tiff/src/Makefile.am:3:   its definition is in aclocal's search path.
autoreconf: automake failed with exit status: 1
.----------------------------------------------------
martijn@Desktop-X2-50:~/projects/scroom$ sudo apt-get install libtool
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  libltdl-dev
Suggested packages:
  libtool-doc gfortran fortran95-compiler gcj
The following NEW packages will be installed:
  libltdl-dev libtool
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 505 kB of archives.
After this operation, 2,376 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://us.archive.ubuntu.com/ubuntu/ precise/main libltdl-dev amd64 2.4.2-1ubuntu1 [202 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu/ precise/main libtool amd64 2.4.2-1ubuntu1 [302 kB]
Fetched 505 kB in 1s (416 kB/s)
Selecting previously unselected package libltdl-dev.
(Reading database ... 144360 files and directories currently installed.)
Unpacking libltdl-dev (from .../libltdl-dev_2.4.2-1ubuntu1_amd64.deb) ...
Selecting previously unselected package libtool.
Unpacking libtool (from .../libtool_2.4.2-1ubuntu1_amd64.deb) ...
Processing triggers for man-db ...
Setting up libltdl-dev (2.4.2-1ubuntu1) ...
Setting up libtool (2.4.2-1ubuntu1) ...
.----------------------------------------------------
martijn@Desktop-X2-50:~/projects/scroom$ autoreconf -i
Git claims this is version 0.5.4-2-gd827836
Git claims this is version 0.5.4-2-gd827836
libtoolize: putting auxiliary files in `.'.
libtoolize: copying file `./config.guess'
libtoolize: copying file `./config.sub'
libtoolize: `./install-sh' is newer: use `--force' to overwrite
libtoolize: copying file `./ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: You should add the contents of `m4/libtool.m4' to `aclocal.m4'.
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: You should add the contents of `m4/ltoptions.m4' to `aclocal.m4'.
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: You should add the contents of `m4/ltsugar.m4' to `aclocal.m4'.
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
libtoolize: You should add the contents of `m4/lt~obsolete.m4' to `aclocal.m4'.
Git claims this is version 0.5.4-2-gd827836
Git claims this is version 0.5.4-2-gd827836
.----------------------------------------------------
martijn@Desktop-X2-50:~/projects/scroom$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
8<--------------------------------------------------------
configure: error: Package requirements (gtk+-2.0 >= 2.0.0) were not met:

No package 'gtk+-2.0' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables UTILS_CFLAGS
and UTILS_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

.-----------------------------------------------------
martijn@Desktop-X2-50:~/projects/scroom$ sudo apt-get install libgtk-3-0
already installed. same issue
.----------------------------------------------------
sudo apt-get install libgtk-3-dev:
martijn@Desktop-X2-50:~/projects/scroom$ sudo apt-get install libgtk-3-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  build-essential debhelper dh-apparmor dpkg-dev gettext html2text
  intltool-debian libalgorithm-diff-perl libalgorithm-diff-xs-perl
  libalgorithm-merge-perl libatk1.0-dev libcairo-script-interpreter2
  libcairo2-dev libdpkg-perl libfontconfig1-dev libfreetype6-dev
  libgdk-pixbuf2.0-dev libgettextpo0 libglib2.0-bin libglib2.0-dev
  libmail-sendmail-perl libpango1.0-dev libpcre3-dev libpcrecpp0
  libpixman-1-dev libpng12-dev libsys-hostname-long-perl libunistring0
  libxcb-render0-dev libxcb-shm0-dev libxcomposite-dev libxcursor-dev
  libxdamage-dev libxext-dev libxfixes-dev libxft-dev libxi-dev
  libxinerama-dev libxrandr-dev libxrender-dev po-debconf
  x11proto-composite-dev x11proto-damage-dev x11proto-fixes-dev
  x11proto-randr-dev x11proto-render-dev x11proto-xext-dev
  x11proto-xinerama-dev
Suggested packages:
  dh-make debian-keyring gettext-doc libcairo2-doc libglib2.0-doc libgtk-3-doc
  libpango1.0-doc libmail-box-perl
The following NEW packages will be installed:
  build-essential debhelper dh-apparmor dpkg-dev gettext html2text
  intltool-debian libalgorithm-diff-perl libalgorithm-diff-xs-perl
  libalgorithm-merge-perl libatk1.0-dev libcairo-script-interpreter2
  libcairo2-dev libdpkg-perl libfontconfig1-dev libfreetype6-dev
  libgdk-pixbuf2.0-dev libgettextpo0 libglib2.0-bin libglib2.0-dev
  libgtk-3-dev libmail-sendmail-perl libpango1.0-dev libpcre3-dev libpcrecpp0
  libpixman-1-dev libpng12-dev libsys-hostname-long-perl libunistring0
  libxcb-render0-dev libxcb-shm0-dev libxcomposite-dev libxcursor-dev
  libxdamage-dev libxext-dev libxfixes-dev libxft-dev libxi-dev
  libxinerama-dev libxrandr-dev libxrender-dev po-debconf
  x11proto-composite-dev x11proto-damage-dev x11proto-fixes-dev
  x11proto-randr-dev x11proto-render-dev x11proto-xext-dev
  x11proto-xinerama-dev
0 upgraded, 49 newly installed, 0 to remove and 0 not upgraded.
Need to get 13.7 MB of archives.
After this operation, 57.6 MB of additional disk space will be used.
Do you want to continue [Y/n]? y
8<--------------------------------------------------------

martijn@Desktop-X2-50:~/projects/scroom$ ./configure
same issue

martijn@Desktop-X2-50:~/projects/scroom$ sudo apt-get install libgtk2.0-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  gir1.2-gtk-2.0
Suggested packages:
  libgtk2.0-doc
The following NEW packages will be installed:
  gir1.2-gtk-2.0 libgtk2.0-dev
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 4,101 kB of archives.
After this operation, 20.4 MB of additional disk space will be used.
Do you want to continue [Y/n]? y
8<--------------------------------------------------------

martijn@Desktop-X2-50:~/projects/scroom$ ./configure:
configure: error: Package requirements (gtk+-2.0 >= 2.0.0, libglade-2.0, gthread-2.0, gmodule-2.0, cairo) were not met:

No package 'libglade-2.0' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables GUI_CFLAGS
and GUI_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
.--------------------------------------------------------
martijn@Desktop-X2-50:~/projects/scroom$ sudo apt-get install libglade2.0
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'libglade2.0-cil-dev' for regex 'libglade2.0'
Note, selecting 'libglade2.0-cil' for regex 'libglade2.0'
Note, selecting 'libglade2-0' for regex 'libglade2.0'
libglade2-0 is already the newest version.
libglade2-0 set to manually installed.
The following extra packages will be installed:
  cli-common libgdiplus libglib2.0-cil libglib2.0-cil-dev libgtk2.0-cil
  libgtk2.0-cil-dev libmono-cairo4.0-cil libmono-corlib4.0-cil
  libmono-i18n-west4.0-cil libmono-i18n4.0-cil libmono-security4.0-cil
  libmono-system-configuration4.0-cil libmono-system-drawing4.0-cil
  libmono-system-security4.0-cil libmono-system-xml4.0-cil
  libmono-system4.0-cil mono-4.0-gac mono-gac mono-runtime
Suggested packages:
  monodoc-gtk2.0-manual libmono-i18n4.0-all libgamin0
The following NEW packages will be installed:
  cli-common libgdiplus libglade2.0-cil libglade2.0-cil-dev libglib2.0-cil
  libglib2.0-cil-dev libgtk2.0-cil libgtk2.0-cil-dev libmono-cairo4.0-cil
  libmono-corlib4.0-cil libmono-i18n-west4.0-cil libmono-i18n4.0-cil
  libmono-security4.0-cil libmono-system-configuration4.0-cil
  libmono-system-drawing4.0-cil libmono-system-security4.0-cil
  libmono-system-xml4.0-cil libmono-system4.0-cil mono-4.0-gac mono-gac
  mono-runtime
0 upgraded, 21 newly installed, 0 to remove and 0 not upgraded.
Need to get 5,388 kB of archives.
After this operation, 18.0 MB of additional disk space will be used.
Do you want to continue [Y/n]? y
8<--------------------------------------------------------
martijn@Desktop-X2-50:~/projects/scroom$ ./configure
8<--
8<--
configure: error: Package requirements (gtk+-2.0 >= 2.0.0, libglade-2.0, gthread-2.0, gmodule-2.0, cairo) were not met:
No package 'libglade-2.0' found
8<--------------------------------------------------------
martijn@Desktop-X2-50:~/projects/scroom$ sudo apt-get install libglade2-dev
8<--------------------------------------------------------
martijn@Desktop-X2-50:~/projects/scroom$ ./configure
8<--------------------------------------------------------
 Scroom version 0.5.4-2-gd827836

 Prefix:   '/usr/local'.
 Compiler: 'g++ -std=c++0x -Wsign-promo -Woverloaded-virtual -Wnon-virtual-dtor
-Wfloat-equal -Wswitch-enum -Wcast-qual -Winit-self -Wuninitialized -Wredundant-decls -Wunused -Wwrite-strings -Wpointer-arith -Wextra -W -Wall -g -O2 '

 Package features:
   Mutracx hacks: no
   Doxygen:       no
     all code:    no
   Unittests:     yes

 Now type 'make [<target>]'
   where the optional <target> is:
     all                - build all binaries
     install            - install everything
     doxygen-doc        - generate documentation
                          (if enabled)
     check              - perform tests
.--------------------------------------------------

martijn@Desktop-X2-50:~/projects/scroom$ make
.--------------------------------------------------------
.--------------------------------------------------------
.- USING BOHDI LINUX 2.3.0
.--------------------------------------------------------
martijn@Desktop-X2-50:~$ uname -a
Linux Desktop-X2-50 3.8.0-12-generic #21 SMP Tue Mar 12 17:39:30 CDT 2013 x86_64 x86_64 x86_64 GNU/Linux
martijn@Desktop-X2-50:~/projects/scroom$ 

Properly deal with gtk ui lock

Currently the gtk ui lock causes a big mess. Some functions are called with the lock held, some not, and some cannot be called with the lock held because they will attempt to acquire the lock themselves.

All in all, there currently is no pattern in what to expect where.

Some ideas:

  • Wrap the gtk ui lock in a RAII style object of some kind
  • Add some internal bookkeeping as to whether the lock is held
    • In functions called from gtk with the lock held, update the internal bookkeeping
    • When locking the ui lock yourself, also update the bookkeeping
  • At the beginning of each function, check lock status against your expectations

Scroom in Windows

I know that this may not be perceived as an issue, but: I was wondering what environment best to use in order to build a scroom executable for Windows.

google-maps-style zooming

When zooming in, show an unsharp preview, instead of nothing at all
When zooming out, show the original picture, zoomed out, surrounded by ...

Migrate to "real" boost::futures

Scroom currently uses a futures "proposal", which has an api that is not compatible with the final version. We should migrate to the final version, to ensure future compatibility

PANIC: load() unexpected in state DIRTY

Bootstrapping Scroom...
Scanning directory: /usr/lib/scroom
Reading file: /usr/lib/scroom/libsptiff.so
I learned how to open a Tiff viewer file!
Reading file: /usr/lib/scroom/libspexample.so
I learned how to create a new Example!
Reading file: /usr/lib/scroom/libsprle.so
I learned how to open a Rle viewer file!
I learned how to open a IQI error viewer file!
Reading file: /usr/lib/scroom/libspcolormap.so
Observing Presentations for Colormap!
Opening file XOR.rle
This RLE image has size 211563*155650
Creating a PageProvider providing 197 blocks of 4096 bytes
Layer 0 (1 bpp), 211563*155650, TileCount 52*39
Layer 1 (8 bpp), 26446*19457, TileCount 7*5
Layer 2 (8 bpp), 3306*2433, TileCount 1*1
ColormapPlugin: A presentation was created
Creating a new view
Opening file Shortage_detection_test_violations.err
This RLE image has size 211563*155650
Creating a PageProvider providing 197 blocks of 4096 bytes
Layer 0 (1 bpp), 211563*155650, TileCount 52*39
Layer 1 (1 bpp), 26446*19457, TileCount 7*5
Layer 2 (1 bpp), 3306*2433, TileCount 1*1
ColormapPlugin: A presentation was created
Creating a new view
Opening file Nozzle_failure_detection_test_violations.err
This RLE image has size 211563*155650
Creating a PageProvider providing 197 blocks of 4096 bytes
Layer 0 (1 bpp), 211563*155650, TileCount 52*39
Layer 1 (1 bpp), 26446*19457, TileCount 7*5
Layer 2 (1 bpp), 3306*2433, TileCount 1*1
ColormapPlugin: A presentation was created
Creating a new view
INFO: Finished loading file
INFO: Finished loading file
PANIC: load() unexpected in state 2
PANIC: inflate said: -3 (incorrect data check)
scroom: /usr/local/include/boost/shared_ptr.hpp:419: T* 
boost::shared_ptr< <template-parameter-1-1> >::operator->() const [with 
T = ThreadPool::PrivateData]: Assertion `px != 0' failed.
Aborted

ViewInterface redesign

Things a plugin might want to do

  • Open files
  • Create new (sub) presentations
  • Create a window for a given presentation

Things Scroom might want to do (to a view)

  • Send notifications
    • New "newInterface" <-- ?? Required for dynamically loading plugins (See #37)
    • New presentation <-- for new window menu
    • Presentation destroyed <-- for new window menu
    • New view <-- currently unused
    • View destroyed <-- currently unused
  • Manipulate presentation
    • Query presence
    • Retrieve presentation
    • Set presentation
  • Request a redraw
  • Get title
  • Manipulate properties

Things a plugin might want to do (to a view)

  • Set the colormap
  • Set transparency
  • Manipulate presentation
    • Query presence
    • Retrieve presentation
    • Set presentation
  • Add toolbar buttons
  • Add sidebar widgets

Things a presentation might want to do (to a view)

  • Report progress
  • Add toolbar buttons
  • Add sidebar widgets
  • Send notifications
    • View invalidate
    • Presentation size change

Deadlock when closing scroom while a tiff is being loaded.

Thread 4 (Thread 0x7f04cddb1700 (LWP 24522)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f04d07012cc in Scroom::Detail::ThreadPool::QueueImpl::deletingQueue() () from /usr/lib/libsthreadpool.so.0
#2  0x00007f04d06f8fd7 in ThreadPool::Queue::~Queue() () from /usr/lib/libsthreadpool.so.0
#3  0x00007f04d06fc642 in boost::detail::sp_counted_impl_p<ThreadPool::Queue>::dispose() () from /usr/lib/libsthreadpool.so.0
#4  0x00007f04d04e00e8 in Scroom::MemoryBlobs::Blob::unload() () from /usr/lib/libsmemman.so.0
#5  0x00007f04d04e1c2f in boost::detail::sp_counted_impl_pd<unsigned char*, Scroom::MemoryBlobs::Blob::UnloadData>::dispose() () from /usr/lib/libsmemman.so.0
#6  0x0000000000409379 in boost::detail::shared_count::~shared_count() ()
#7  0x00007f04d0ba92d3 in boost::detail::sp_counted_impl_p<Tile>::dispose() () from /usr/lib/libstiledbitmap.so.0
#8  0x00007f04d0b92bf3 in TileReducer::operator()() () from /usr/lib/libstiledbitmap.so.0
#9  0x00007f04d06fe963 in boost::function0<void>::operator()() const () from /usr/lib/libsthreadpool.so.0
#10 0x00007f04d06f9f95 in ThreadPool::do_one(boost::shared_ptr<ThreadPool::PrivateData>) () from /usr/lib/libsthreadpool.so.0
#11 0x00007f04d06fa329 in ThreadPool::work(boost::shared_ptr<ThreadPool::PrivateData>) () from /usr/lib/libsthreadpool.so.0
#12 0x00007f04d06fc157 in boost::detail::thread_data<boost::_bi::bind_t<void, void (*)(boost::shared_ptr<ThreadPool::PrivateData>), boost::_bi::list1<boost::_bi::value<boost::shared_ptr<ThreadPool::PrivateData> > > > >::run() () from /usr/lib/libsthreadpool.so.0
#13 0x00007f04d6566b70 in thread_proxy () from /usr/lib/libboost_thread.so.1.40.0
#14 0x00007f04d598e9ca in start_thread (arg=<value optimized out>) at pthread_create.c:300
#15 0x00007f04d56ebcdd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#16 0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7f04ccdaf700 (LWP 24524)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f04d0b9acb3 in LoadOperation::operator()() () from /usr/lib/libstiledbitmap.so.0
#2  0x00007f04d0b9ea1d in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, void (*)(boost::shared_ptr<FileOperation>), boost::_bi::list1<boost::_bi::value<boost::shared_ptr<FileOperation> > > >, void>::invoke(boost::detail::function::function_buffer&) () from /usr/lib/libstiledbitmap.so.0
#3  0x00007f04d06fe963 in boost::function0<void>::operator()() const () from /usr/lib/libsthreadpool.so.0
#4  0x00007f04d06f9f95 in ThreadPool::do_one(boost::shared_ptr<ThreadPool::PrivateData>) () from /usr/lib/libsthreadpool.so.0
#5  0x00007f04d06fa329 in ThreadPool::work(boost::shared_ptr<ThreadPool::PrivateData>) () from /usr/lib/libsthreadpool.so.0
#6  0x00007f04d06fc157 in boost::detail::thread_data<boost::_bi::bind_t<void, void (*)(boost::shared_ptr<ThreadPool::PrivateData>), boost::_bi::list1<boost::_bi::value<boost::shared_ptr<ThreadPool::PrivateData> > > > >::run() () from /usr/lib/libsthreadpool.so.0
#7  0x00007f04d6566b70 in thread_proxy () from /usr/lib/libboost_thread.so.1.40.0
#8  0x00007f04d598e9ca in start_thread (arg=<value optimized out>) at pthread_create.c:300
#9  0x00007f04d56ebcdd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#10 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f04d976e7c0 (LWP 24517)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f04d07012cc in Scroom::Detail::ThreadPool::QueueImpl::deletingQueue() () from /usr/lib/libsthreadpool.so.0
#2  0x00007f04d06f8fd7 in ThreadPool::Queue::~Queue() () from /usr/lib/libsthreadpool.so.0
#3  0x00007f04d06fc642 in boost::detail::sp_counted_impl_p<ThreadPool::Queue>::dispose() () from /usr/lib/libsthreadpool.so.0
#4  0x0000000000409379 in boost::detail::shared_count::~shared_count() ()
#5  0x00007f04d563e262 in __run_exit_handlers (status=0) at exit.c:78
#6  *__GI_exit (status=0) at exit.c:100
#7  0x00007f04d5623c54 in __libc_start_main (main=<value optimized out>, argc=<value optimized out>, ubp_av=<value optimized out>, init=<value optimized out>, fini=<value optimized out>, rtld_fini=<value optimized out>, stack_end=0x7fffa77964c8) at libc-start.c:258
#8  0x0000000000406109 in ?? ()
#9  0x00007fffa77964c8 in ?? ()
#10 0x000000000000001c in ?? ()
#11 0x0000000000000002 in ?? ()
#12 0x00007fffa7797b1d in ?? ()
#13 0x00007fffa7797b2d in ?? ()
#14 0x0000000000000000 in ?? ()

TiledBitmap redesign

  • Move LayerOperations? from tiff plugin to TiledBitmap?
    • They are very reusable
  • Add support for 32bits colors (pre-scaled alpha)
  • Revisit the SourcePresentation?
    • It is a bad idea to give all the initiative to TiledBitmap?
    • Is there a performant alternative?

More powerful CLI

  • When starting multiple scrooms from the commandline, they should all end up in the same process
  • It should be possible to replace one bitmap with a new one, in the same window, while keeping the zoom settings
  • For this, destroying a presentation while it is being loaded should be robust

PluginManager simplification

PluginManager was originally written to support dynamic loading and unloading of plugins. In practice, dynamically loading plugins will never happen, and neither will unloading of plugins.

Furthermore, PluginManager loads plugins as a background task, assuming that loading plugins takes a lot of time. In practice, this is not the case.

Jobs that schedule jobs, run the risk of having to destroy the threadpool they are running on

DataFetcher::operator()(), for example, schedules tasks for reducing tiles, as well as subsequent datafetching tasks. Currently, this is done right up to the point where scroom terminates. This results in several problems.

  • Possibly, the threadpool is being destructed, such that calls to CpuBound() return NULL
  • Occasionally, the pointer managed by CpuBound() will be destroyed while rescheduling, such that the scheduling task needs to destroy the threadpool it itself is running on.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.