{"shas":[["786a039f7de972ac2bb869fddd3e976b548690d0","3692bfa45759a67d83aedf0045f6cb635a966abf@snetram.nl","Use the ${ln_s} variable so config.h and config.mak are always updated when using MinGW.\n\nSince MinGW (on windows at least) does not support symlinking natively it makes a copy instead of a link, new compiles are not updated by 'ln -s' as the file already exists, by forcing it it will update the file.\nAs ${ln_s} already defines to use 'ln -sf' I made the change to use this variable.","Jonathan Martens"],["31264105ca80139dd785c6d2d89b6b8e0f81590d","3692bfa45759a67d83aedf0045f6cb635a966abf@snetram.nl","Use the ${ln_s} variable so mythconfig.mak is always updated when using MinGW.\n\nSince MinGW (on windows at least) does not support symlinking natively it makes a copy instead of a link, new compiles are not updated by 'ln -s' as the file already exists, by forcing it it will update the file.\nSince ${ln_s} is already defined in the core configure I also defined it here and set it to 'ln -sf'.","Jonathan Martens"],["3e9c2e6c742611d0a1d0a19973f3048061e9fe95","51f5ecd5c2ecea3328339a98f92bc0212868bba7@softsystem.co.uk","Windows build: Fixes to enable compilation\n\nSigned-off-by: Lawrence Rust <lvr@softsystem.co.uk>","Lawrence Rust"],["da10d33168ab02d2fb72226914313d4f95860730","ccefaad7bdec5abe7cc8861efca4a9b3ef06b782@cuymedia.net","Make RingBuffer dtor virtual.","Daniel Kristjansson"],["16dda801269ef7d6878ed7e6bc17edf1ed54f220","5478ea445c0d2a6b990087201d7c58d93a673757@mythtv.org","Silence a few compiler/analysis tool warnings spotted by Stuart M.","Paul Harrison"],["f2bf6325dd4a0599852cf467c653ca456362648e","5478ea445c0d2a6b990087201d7c58d93a673757@mythtv.org","MythArchive: fix the thumb image finder.\n\nThis works around the broken/incomplete cut list passed from ProgramInfo and\nalso fixes a few compiler/static analysis tool warnings.","Paul Harrison"],["01a91b76d70cfc2656910f686709af25e09d37ff","03a00a04d31566f2b21e34ebd5ebc03968981851@mythtv.org","MythGame: Add a intid to Game Metadata DB.\n\nThis adds an auto-increment primary key to the game metadata DB, equivalent to the one in video metadata.\n\nAlso adds a method to get all the Rom Info from the DB into a QList, which will be of use in writing a better game scanner (and for dissecting the DB queries and UI in the hopefully near future).","Robert McNamara"],["68df557d4793ec88d538108fd58312de1fe533fd","ccefaad7bdec5abe7cc8861efca4a9b3ef06b782@cuymedia.net","Convert NULL strings to empty strings in settings table updates.","Daniel Kristjansson"],["e5784de119e06c8c21fdead0fd728fe773f7f6f0","0b36ee2b03740f5620bf212e5aefe18fbe2c2521@mythtv.org","Fix HTTP Proxy usage.\n\nWhen we setup the http proxy, we were using as a type HttpProxy, when it should\nhave been HttpCachingProxy (as we are using it *only* for HTTP requests).  This\nallowed when we did a listen that it would try to proxy the incoming connections\nas far as I can tell.\n\nAlso, to be absolutely sure, when we use a MythServer or the HTTPServer, we\nnow set the connection's proxy to NoProxy before calling the listen.  This\nkeeps it from even trying.\n\nFixes #9970","Gavin Hurlbut"],["e03fc09b04061b4019f4c2dcbe8a60d870a9f024","0b36ee2b03740f5620bf212e5aefe18fbe2c2521@mythtv.org","Silence the NULL hostname error in jobqueue\n\nMake it initialize the jobHost to QString(\"\") now that we are being more\ncareful about passing NULL.  When we want to send jobs to any host, \"\" should\nwork.","Gavin Hurlbut"],["6e37202bb8ffcbc35e62887a4cb9887afa5ab7e5","e77df5bb52258d09237db91fe0750c4cee25c046@mythtv.org","Support reading of ID3v2 or ID3v1 tags in FLAC\n\nIf an ID3 tag exists then we will read and write to that instead of the\nVorbis comment tag. This includes support for albumart in ID3v2 tags\nfound in FLAC files.\n\nThe implementation is a little messy but I plan to refactor the metaio\nclasses and this will do for now.","Stuart Morgan"],["a160548762955d175878f1bbd10d7e146e9460da","03a00a04d31566f2b21e34ebd5ebc03968981851@mythtv.org","MythGame: Add an in-menu Game Scan.\n\nThis is a MythUI game scanner implementation which does a couple of relevant things.\n\nFirstly and most importantly, it allows the user to perform game scans in the \"Play Games\" UI rather than hunting down the old game scanner in the Setup Menus.  It also makes certain Metadata methods more parallel to the metadata functions in libmythmetadata for simplicity (SaveToDatabase, DeleteFromDatabase, etc. called on the metadata object)\n\nThe old scanner is left in place for the short term since this one is a ground-up reimplementation and I may have missed a few things or done something in some wrong way.  For my purposes, though, it's working properly.  I do still have a bit more to do to add a few random features of the old scanner (automatically detecting screenshots, etc).\n\nThis commit also does a little more work to extricate the UI code from the database code.  As a result, there's still some repeated functionality here until I'm confident enough to rip out the old stuff in a later refactor.  Still to do is more fully removing the DB code from the UI code, further cleanup of the new scanner, then a reimplementation of the UI code to parallel other MythTV metadata browsers (three view, etc).","Robert McNamara"],["8642ea645fbb2b251f79788e1f76a8f62b6389a3","e77df5bb52258d09237db91fe0750c4cee25c046@mythtv.org","Const fixes for MetaIO classes","Stuart Morgan"],["47d67e6722092471069c52d1b0a37509477b5d85","ccefaad7bdec5abe7cc8861efca4a9b3ef06b782@cuymedia.net","This adds two new classes MThread and MThreadPool to be used instead of QThread and QThreadPool.\n\nThese mirror the API's of the Qt classes but also add a requirement for a QString naming\nthe thread or naming the runnable which are used for debugging. These wrappers also make\nsure mysql connections are torn down properly and have a number of safety checks and\nassurances. The destructor for MThread also makes sure that a thread has stopped running\nbefore we allow the QThread to be deleted. And MThreaPool makes sure all it's threads\nhave stopped running. MThread has a Cleanup() method that attempts to shut down any threads\nthat are running, it only works for threads that exit on a call to exit(), which includes\nany threads using the Qt event loop. It will also print out the names of the threads that\nare still running for debugging purposes.\n\nMThread has one special constructor. It takes a QRunnable* and runs it instead of the\nQt event loop in the default run() implementation. Unlike MThreadPool and QThreadPool,\nMThread does not delete this runnable when it exits. This allows you to run something\nwith less boilerplate code. Just like with QThread in Qt4 it really is better to use\nthe Qt event loop rather than write your own. As you don't use the Qt event loop QObject\ndeleteLater's are not executed until the  thread exits, Qt events and timers do not work\nmaking Qt networking classes misbehave and signals/slots are generally unsafe. However,\nmany of the threads with event loops in MythTV were written before Qt allowed an event\nloop outside the main thread so this syntactic sugar just lets us handle that with less\nlines of code.\n\nThere are a few other differences with respect to Qt's classes other than requiring a name.\nFirst, MThread does not inherit from QObject, if you need QObject services in a threading\nclass you will need to inherit from QObject seperately. Note when you inherit from QObject,\nyou must inherit from no more than one QObject based class and it must be first in the list\nof classes your class inherits from (a Qt restriction). Second, QThread doesn't implement\nmost of QThread's static methods, notably QThread::currentThread(). It does make the\nunderlying QThread available via the qthread() method.. but the usual reason to use\nQThread::currentThread() is to check which thread you are running in.. for this there\nis a set of helper functions is_current_thread(MThread&), is_current_thread(QThread*),\nand is_current_thread(MThread*) which you can use instead. Finally, MThreadPool does not\nhave reserveThread() and releaseThread() calls; instead use startReserved(). The\nreserveThread() and releaseThread() API is not a good API because it doesn't ensure that\nyour runnable starts right away even though the thread will eventually not be counted\namoung those forcing other threads to go to the queue rather than running right away.","Daniel Kristjansson"],["f3a67b348964fa3582e08cfdd0dcdcf4747b3e46","ccefaad7bdec5abe7cc8861efca4a9b3ef06b782@cuymedia.net","Renames recorder's StartRecorder() method to run().\n\nStartRecorder is actually the loop that runs the entire time that a recording is in\nprogress. Unlike in the TV class where it is a signal for the event loop to start\na recording.","Daniel Kristjansson"],["b008d612257538936bfcf0f3a26e854044a1d3fa","ccefaad7bdec5abe7cc8861efca4a9b3ef06b782@cuymedia.net","Share DB connection per thread & PurgeIdleThreads when possible","Daniel Kristjansson"],["3c0898f13b3a097e8aab15bb0a08561a71e04f9d","ccefaad7bdec5abe7cc8861efca4a9b3ef06b782@cuymedia.net","Add some housekeeping to threadpool.","Daniel Kristjansson"],["33dbe84d905010a68190aa36647e5283ab55c31a","ccefaad7bdec5abe7cc8861efca4a9b3ef06b782@cuymedia.net","Add the ability for startReserved to wait a little while for a free thread before going ahead with creating a new one.","Daniel Kristjansson"],["9cf7e5528db4c1b34783e46a97b2942d62cf9117","ccefaad7bdec5abe7cc8861efca4a9b3ef06b782@cuymedia.net","Convert MainServer's ProcessRequest thread poll to MThreadPool.","Daniel Kristjansson"],["37961e22c72ac25d2b9ecb9476567b548aec92bb","ccefaad7bdec5abe7cc8861efca4a9b3ef06b782@cuymedia.net","Convert UPnP to MThreadPool","Daniel Kristjansson"]],"ref":"refs/heads/gen_psip","size":64,"head":"b5bf88b91715b42909c7829dc72e82b0c910d3a9","push_id":39332843}