GitHub PushEvent at 2014-08-07 07:57:45
Repository: xbmc
Actor: jmarshallnz
Payload: {"shas":[["e68aecb2ce6fdc4f4ad39d3bdbac6a0ac1e3fac7","2c887421801c1073f717cb4507fab4ffb130b138@xbmc.org","CGUIDialogContextMenu: remove \"Add source\" context menu entry","montellese",true],["6bcc6bc3e3b51c8c41b52615a9ca945c3f15c6f9","0ccb355d7aa08f1a2a9103e16d9034fc018e984f@gmail.com","[omx] Restrict the number of outstanding jpeg calls to gpu\n\nAllowing more than one outstanding call to gpu for texture encode/decode can be beneficial as processing\ncan be overlapped with vchiq message transfer.\n\nExperimentally, 3 outstanding operations is optimal.\n\nAllowing more that this ties up memory on GPU without any performance benefit, so avoid submitting more jobs","popcornmix",true],["f35615892efaeb23e4c8f96da79f78ebfa5bf610","d7ebb597520c9a1d41b531f7085c438e5da0184a@xbmc.org","[videodb] adds UpdateDetailsForMovie() and calls it from JSON-RPC to more efficiently update movies.\n\nLink tables are only updated if they need to be.","Jonathan Marshall",true],["d56a15e60de9f958162bbee78793abe8d95c3368","711c73f64afdce07b7e38039a96d2224209e9a6c@dokein.co.uk","[videodb] Initial work on fine-grained DB updates for Movies - JSON-RPC\n\nLots of new code here, most of this is from a post on forums:\nThings to do:\nA few bits of tidy up refactoring, eg CVideoDatabase::GetValueString's 2\nversions could do with their core being merged.\nStyle/whitespace probably isn't quite right\nSome of the funcs could probably do with better names\nSome docs on how the Update works, as it's rather tied into being called\nfrom JSON\nTesting - at the moment I've done some basic testing, but really need to\ncheck that the api works in all cases.\n\nNote the focus is for the available calls from the JSON VideoLibrary.\n\nHow does it work:\nDuring the parsing in UpdateVideoTag of the JSON items into the existing\nobject, a vector of changed items is made.\n\nTo try and make the code more readable I've converted the long list of\nIf's into calls to new wrapper funcs (also called UpdateVideoTag) The\nsimple wrappers checks that the current value is differnt to the new\nvalue, and only flags it for update, complex lists are always updated.\n\nI'm not happy with how many versions of UpdateVideoTag there are, I\ncan't escape the feeling some kind of generic would be better, however,\nthere's no generic conversion on CVariant.\n\nThe idea is that the JSON provides the vector of changes into a new API\nin the VideoDatabase code.\n\nThe new API is called:\nUpdateDetailsForMovie\n\nIt takes the same params as SetDetailsForMovie, along with the vector of\nchanges.\n\nThe first it does it take the vector and convert it into two lists,\nhandled by PendingUpdates.\n\nOne is a list of the simple changes (in fact a list of VIDEODB_ID enum\nvalues).  This list is checked for types that I guess have changed into\nlists, eg genre, directors, although they were once their own field in\nthe db.  This simple list is used to create the UPDATE SQL call.\n\nThe more complex list contains harder to parse items, eg art and tags.\n\nIf it doesn't understand one of the changes it falls back to using the\nSetDetailsForMovie.\n\nThe update work then tries to only do the needed updates.  It starts\nwith the simple updates, and processes the lists, eg Genre, director,\nstudios, and deletes the db entries and adds them back in.\n\nIt them moves onto the tags and art, and processes them in the same way,\nIE only deletes them if needed.\n\nThe last part is the SQL Update.  I've added a new version of\nGetValueString, which takes the vector of \"simple\" changes, and will\ngenerate an update of just the items that have changed.\n\nIf nothing needs an \"UPDATE\" one won't be run.\n\nSome code tidy-up before pull request\n\nFix build failure.\nFix some indentation issues.\nRemove some comments/notes to myself.\nMerge some CStdString and the = PrepareSql lines.\n\nFix Log message\n\nCorrectly pass log message a char * rather than std::string.","Chris Gilbert",true],["2b42cce2750bca70bf0711c1b7935db81b78ba53","711c73f64afdce07b7e38039a96d2224209e9a6c@dokein.co.uk","[videodb] Refactor CVideoDatabase::GetValueString into ProcessValueString, GetValueString","Chris Gilbert",true],["dfd6c31458705b65bd3eda285861fd21c02061ad","d7ebb597520c9a1d41b531f7085c438e5da0184a@xbmc.org","[videodb] adds new GetValueString() that takes updates and generates string","Jonathan Marshall",true],["f2db39be1fc5a92e73d83b71d680144ed1545057","711c73f64afdce07b7e38039a96d2224209e9a6c@dokein.co.uk","[videodb] Initial work on fine-grained DB updates for Movies - VideoDB changes\n\nLots of new code here, most of this is from a post on forums:\nThings to do:\nA few bits of tidy up refactoring, eg CVideoDatabase::GetValueString's 2\nversions could do with their core being merged.\nStyle/whitespace probably isn't quite right\nSome of the funcs could probably do with better names\nSome docs on how the Update works, as it's rather tied into being called\nfrom JSON\nTesting - at the moment I've done some basic testing, but really need to\ncheck that the api works in all cases.\n\nNote the focus is for the available calls from the JSON VideoLibrary.\n\nHow does it work:\nDuring the parsing in UpdateVideoTag of the JSON items into the existing\nobject, a vector of changed items is made.\n\nTo try and make the code more readable I've converted the long list of\nIf's into calls to new wrapper funcs (also called UpdateVideoTag) The\nsimple wrappers checks that the current value is differnt to the new\nvalue, and only flags it for update, complex lists are always updated.\n\nI'm not happy with how many versions of UpdateVideoTag there are, I\ncan't escape the feeling some kind of generic would be better, however,\nthere's no generic conversion on CVariant.\n\nThe idea is that the JSON provides the vector of changes into a new API\nin the VideoDatabase code.\n\nThe new API is called:\nUpdateDetailsForMovie\n\nIt takes the same params as SetDetailsForMovie, along with the vector of\nchanges.\n\nThe first it does it take the vector and convert it into two lists,\nhandled by PendingUpdates.\n\nOne is a list of the simple changes (in fact a list of VIDEODB_ID enum\nvalues).  This list is checked for types that I guess have changed into\nlists, eg genre, directors, although they were once their own field in\nthe db.  This simple list is used to create the UPDATE SQL call.\n\nThe more complex list contains harder to parse items, eg art and tags.\n\nIf it doesn't understand one of the changes it falls back to using the\nSetDetailsForMovie.\n\nThe update work then tries to only do the needed updates.  It starts\nwith the simple updates, and processes the lists, eg Genre, director,\nstudios, and deletes the db entries and adds them back in.\n\nIt them moves onto the tags and art, and processes them in the same way,\nIE only deletes them if needed.\n\nThe last part is the SQL Update.  I've added a new version of\nGetValueString, which takes the vector of \"simple\" changes, and will\ngenerate an update of just the items that have changed.\n\nIf nothing needs an \"UPDATE\" one won't be run.\n\nSome code tidy-up before pull request\n\nFix build failure.\nFix some indentation issues.\nRemove some comments/notes to myself.\nMerge some CStdString and the = PrepareSql lines.\n\nFix Log message\n\nCorrectly pass log message a char * rather than std::string.","Chris Gilbert",true],["dcee1f14af7bdd23141dfd892f75a22bb3b48cad","d7ebb597520c9a1d41b531f7085c438e5da0184a@xbmc.org","[videodb] only update art table if needed","Jonathan Marshall",true],["64fcecb66f58681ae65afffbf1f4d91af804f9a1","711c73f64afdce07b7e38039a96d2224209e9a6c@dokein.co.uk","Possible fix for performance issue on updates\n\nIf 300+ updates are carried out too quickly then the message loop\nstruggles with the refresh events from the Json layer.\n\nIt appears that the JSON layer triggers a full refresh, and this causes\npain if you're on the movies view as the refreshes process.\n\nI've added an extra API to allow a FileItem to passed into the refresh\nbuilder, and it then passes that item around as being the thing to\nrefresh.\n\nThis stops the heavy refresh rate, but still slows the UI down while it\ngets through the backlog of events.\n\nI've also added code to only push a refresh event if there was actually\na change to the movie.","Chris Gilbert",true]],"size":9,"ref":"refs/heads/finer-grained-updates","head":"64fcecb66f58681ae65afffbf1f4d91af804f9a1"}