A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 102 lines 2.9 kB view raw
1/* 2 * Windows MTP Firmware Uploading Implementation 3 * 4 * Based on http://opensource.creative.com/mtp_xfer.html 5 * Edited by Maurus Cuelenaere for Rockbox 6 * 7 * Copyright (c) 2009, Maurus Cuelenaere 8 * All rights reserved. 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that the following conditions are met: 12 * * Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * * Redistributions in binary form must reproduce the above copyright 15 * notice, this list of conditions and the following disclaimer in the 16 * documentation and/or other materials provided with the distribution. 17 * * Neither the name of the <organization> nor the 18 * names of its contributors may be used to endorse or promote products 19 * derived from this software without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY MAURUS CUELENAERE ''AS IS'' AND ANY 22 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 23 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 24 * DISCLAIMED. IN NO EVENT SHALL MAURUS CUELENAERE BE LIABLE FOR ANY 25 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 26 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 27 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 28 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33#include <windows.h> 34#include "mswmdm_i.c" 35#include "mswmdm.h" 36#include "sac.h" 37#include "scclient.h" 38 39#include "progresshelper.h" 40 41 42 43 44CProgressHelper::CProgressHelper( void (*callback)(unsigned int progress, unsigned int max) ) 45{ 46 m_cur_ticks = 0; 47 m_max_ticks = 0; 48 m_counter = 0; 49 50 m_callback = callback; 51} 52 53CProgressHelper::~CProgressHelper() 54{ 55} 56 57HRESULT CProgressHelper::Begin( DWORD dwEstimatedTicks ) 58{ 59 m_max_ticks = dwEstimatedTicks; 60 61 return S_OK; 62} 63 64HRESULT CProgressHelper::Progress( DWORD dwTranspiredTicks ) 65{ 66 m_cur_ticks = dwTranspiredTicks; 67 68 if(m_callback != NULL) 69 m_callback(m_cur_ticks, max(m_max_ticks, m_cur_ticks)); 70 71 return S_OK; 72} 73 74HRESULT CProgressHelper::End() 75{ 76 m_cur_ticks = m_max_ticks; 77 78 return S_OK; 79} 80 81HRESULT CProgressHelper::QueryInterface( REFIID riid, void __RPC_FAR *__RPC_FAR *ppvObject ) 82{ 83 if(riid == IID_IWMDMProgress || riid == IID_IUnknown) 84 { 85 *ppvObject = this; 86 return S_OK; 87 } 88 else 89 { 90 *ppvObject = NULL; 91 return E_NOINTERFACE; 92 } 93} 94 95ULONG CProgressHelper::AddRef() 96{ 97 return m_counter++; 98} 99ULONG CProgressHelper::Release() 100{ 101 return m_counter--; 102}