Skip to content

Commit

Permalink
THUMBNAILER: windows explorer dll fixes
Browse files Browse the repository at this point in the history
see issue #85
  • Loading branch information
mgerhardy committed May 21, 2024
1 parent f8114f4 commit 42a3956
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 5 deletions.
17 changes: 13 additions & 4 deletions src/tools/thumbnailer/windows/ThumbnailerProvider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,15 @@
#include "core/TimeProvider.h"
#include "io/Filesystem.h"

#include <Windows.h>
#include <Shlwapi.h>
#include <tchar.h>
#include <stdint.h>
#include <stdio.h>

extern void DllAddRef();
extern void DllRelease();

class DLLThumbnailer : public Thumbnailer {
private:
using Super = Thumbnailer;
Expand Down Expand Up @@ -49,15 +54,17 @@ class DLLThumbnailer : public Thumbnailer {
};

ThumbnailerProvider::ThumbnailerProvider() : count(1) {
DllAddRef();
}

ThumbnailerProvider::~ThumbnailerProvider() {
DllRelease();
}

IFACEMETHODIMP ThumbnailerProvider::QueryInterface(REFIID riid, void **ppv) {
static const QITAB qit[] = {
QITABENT(ThumbnailerProvider, IInitializeWithFile),
QITABENT(ThumbnailerProvider, IThumbnailProvider),
QITABENT(ThumbnailerProvider, IInitializeWithStream),
{0},
};
return QISearch(this, qit, riid, ppv);
Expand All @@ -75,13 +82,12 @@ IFACEMETHODIMP_(ULONG) ThumbnailerProvider::Release() {
return refs;
}

IFACEMETHODIMP ThumbnailerProvider::Initialize(LPCWSTR pfilePath, DWORD grfMode) {
HRESULT hr = E_INVALIDARG;
HRESULT ThumbnailerProvider::Initialize(LPCWSTR pfilePath, DWORD grfMode) {
char filename[10240];
size_t size;
wcstombs_s(&size, filename, 10240, pfilePath, 10240);
m_pPathFile = core::String(filename);
return hr;
return S_OK;
}

IFACEMETHODIMP ThumbnailerProvider::GetThumbnail(UINT cx, HBITMAP *phbmp, WTS_ALPHATYPE *pdwAlpha) {
Expand All @@ -100,13 +106,16 @@ IFACEMETHODIMP ThumbnailerProvider::GetThumbnail(UINT cx, HBITMAP *phbmp, WTS_AL
core::string::formatBuf(argv5, sizeof(argv5), "%s", m_pPathFile.c_str());
char *argv[] = {argv1, argv2, argv3, argv4, argv5};
app.startMainLoop(5, argv);
*pdwAlpha = WTSAT_ARGB;
return (*phbmp) ? S_OK : S_FALSE;
}

ThumbnailerProviderFactory::ThumbnailerProviderFactory() : count(1) {
DllAddRef();
}

ThumbnailerProviderFactory::~ThumbnailerProviderFactory() {
DllRelease();
}

IFACEMETHODIMP ThumbnailerProviderFactory::QueryInterface(REFIID riid, void **ppv) {
Expand Down
2 changes: 1 addition & 1 deletion src/tools/thumbnailer/windows/ThumbnailerProvider.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class ThumbnailerProvider : public IInitializeWithFile, public IThumbnailProvide
IFACEMETHODIMP_(ULONG) Release() override;

// IInitializeWithFile::Initialize()
IFACEMETHODIMP Initialize(LPCWSTR pfilePath, DWORD grfMode) override;
HRESULT Initialize(LPCWSTR pszFilePath, DWORD grfMode) override;

// IThumbnailProvider::GetThumbnail()
IFACEMETHODIMP GetThumbnail(UINT cx, HBITMAP *phbmp, WTS_ALPHATYPE *pdwAlpha) override;
Expand Down

0 comments on commit 42a3956

Please sign in to comment.