Here is what I do to reproduce it:
* open a directory with a bunch of files
* start rolling mouse wheel very fast to have a bunch of files queued for rendering
* press ESC while it's still stepping forward to next files
Result: XnView hangs, eats > 100% of CPU, can't recover have to kill it.
It seems to happen while a jpeg file to be displayed is still rendered as the (progressive?) blurry preview (in View mode), and pressing ESC ungracefully interrupts its pipeline, which leads to an infinite loop somewhere (?).
Here below is the last few lines from terminal output.
Code: Select all
LOAD PREVIEW
LOAD INFO </data/016.jpg>
## Bitmap :: load 0
###### LOAD BITMAP </data/001.jpg>
## Bitmap :: load 2048
###### LOAD BITMAP </data/001.jpg>
BitmapLoadThread :: stop()
### crack
### resetViewport (1f87c90) ==> 1237 937 (654 937) 0 0
SIZE : 0 126 (-1)
SIZE : 0 109 (-1)
BitmapLoadThread :: stop()
getNext => 4
==> 20671d0
##START cache 1 /data/002.jpg
/data/002.jpg (2654 3800)
MyPreviewThread :: stop()
m_stopCondition.wait()
### crack
## BitmapLoadThread :: load -1 -1
## Bitmap :: load 0
###### LOAD BITMAP </data/001.jpg>
## MyPreviewThread :: ERROR : 15 (0x1fe0110)
m_stopCondition.wakeOne()
m_loadCondition.wait()
MyPreviewThread :: set
## Bitmap :: load 0
###### LOAD BITMAP </data/002.jpg>
getNext => 4
==> 20671d0
setCurrentFilename </data/002.jpg>
LOAD PREVIEW
LOAD INFO </data/002.jpg>
## Bitmap :: load 2048
###### LOAD BITMAP </data/002.jpg>
BitmapLoadThread :: stop()
### crack
### resetViewport (1f87c90) ==> 1237 937 (654 937) 0 0
SIZE : 0 126 (-1)
SIZE : 0 109 (-1)
BitmapLoadThread :: stop()
getNext => 4
## BitmapLoadThread :: load -1 -1
## Bitmap :: load 0
###### LOAD BITMAP </data/002.jpg>
==> 20ec540
##START cache 1 /data/003.jpg
/data/aa0.jpg (2654 3800)
MyPreviewThread :: stop()
m_stopCondition.wait()
### crack
## MyPreviewThread :: ERROR : 15 (0x1fe0110)
m_stopCondition.wakeOne()
m_loadCondition.wait()
MyPreviewThread :: set
## Bitmap :: load 0
###### LOAD BITMAP </data/003.jpg>
########################################
############### UPDATE MENU ############
########################################
## BaseViewWindow :: ~BaseViewWindow()
ThumbLoaderThread :: stop()
### ThumbLoaderThread :: stop() ok
ThumbLoaderThread :: stop()
### ThumbLoaderThread :: stop() ok
######ThumbLoaderThread :: run : 20abf90 OK
QMutex: destroying locked mutex
## BaseViewWindow :: ~BaseViewWindow() ok
AbstractViewWindow :: ~AbstractViewWindow()
BitmapLoadThread :: stop()
### crack
## ~MyPreviewThread (0x1fe0110)
## MyPreviewThread :: ERROR : 0 (0x1fe0110)
m_stopCondition.wakeOne()
m_loadCondition.wait()
Terminated
Hope that helps! Keep up the good work.