Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Official 4.4 Beta Release Thread
Version 4.3.920 is posted. This one, modulo any issues that need to be addressed, finishes the changes required to bring media renderers into the new driver architecture world. Third party driver writers should be safe enough moving forward now with upgrading their drivers to fit into this new world.

The faux gestures were put back in, though it remains to be seen how convenient their are to use in practice.
  • Take the final step in standardization of media renderer drivers. We need to work transport and volume/mute device classes and update the C++ and CML renderers to support those, which means moving more functionality down into the base class. At that point we should have completely standardized control over renderers, vastly better for everyone.

  • The new renderer base class wasn't dealing with failure to start a new item, so it wouldn't move forward in the playlist if that happened. It wasn't resetting it's media state flags before starting a new item, so if the new item didn't start, it never realized this, because it didn't see any state change.

  • The advanced media item browser isn't working correctly when you do a swipe on the edge (scroll to top or bottom.) It doesn't get the correct items loaded for the target page it's sliding to.

  • The new standard renderer base class wasn't clearing the metadata fields if you deleted the last item in the playlist.

  • Take a whack at putting back the faux gesture support, and let's see how it works out. It may not be great, depending on how non-multi-touch touch screens deal with right/left mouse buttons.

  • Add a flag parameter to the query that returns all the standard media renderer fields, so that we can allow for a certain amount of flexibility on the definitions. Currently there's just one flag, whether the renderer allows seeking to a position within the media or not. The base class doesn't handle this yet, since none of the ones that derive from it are seekable, but it's there to allow for this if needed by other renderer classes. And the base class ctor also now takes a default playlist mode so each driver can easily set up a default mode it wants set.
Dean Roddey
Explorans limites defectum
Version 4.3.921 is posted. This one finishes up the media renderer changes for 4.4, unless a detail or two still needs to be addressed after testing. It includes some small fixes and improvements. And I've added new support on the CQC side and updated the Android room config base app to work with this one (the 2013/08/22 version which I'll post over in the third party apps section after I finish this post.) The iOS room config app won't have been updated yet since the changes are only now available to allow for it.

Room config and auto-gen only works with V2 architecture versions of the media renderers now, so you'll need to update your renderer drivers to the V2 versions if you want to use those things. I've done a thread with some discussion of the changes involved. They are not very extensive or difficult to deal with, and the benefits are many.

Due to these changes if you are using any third party media renderers, make sure that they are updated before you upgrade or they won't work. All the shipped renderer drivers except the Logitech and Boxee ones have been updated. I made the basic changes on those but wasn't in a position to fully complete them myself.
  • There is a subtle issue in action command parameter parsing. A sequence like %\\ or %\ will not work right because it sees the % and starts looking for the ( to see if it's a token, but the escapement handling code sees the \ and fails to note that it's not going to see a token now and go back to looking for a first token character again.

  • In the standard renderer scheme, add a new PLItemKey field (MREND#PLItemKey in the V2 world.) This will be in the form "repo cookie". Now that we can have a different repo in every playlist item, we run into the issue of how clients (media image widget, XML GW based clients, etc...) can get stuff like the cover art when a new playlist item is selected. Instead of making them query all the info for the current PL item, almost none of which they need, the renderers can easily just maintain this field, and clients can just watch for it to change. When it does, they are atomically getting the repo and cookie, and then go get whatever then need from the associated repo. They can also use this as a cover art cache key. The cookie should be an item cookie if one is present (implies music) or a collection cookie if not (implies movies.)

  • Now that we have the above PLItemKey field, update the media image widget to use it, and associate that widget type with that field instead of the various current cookie fields, which will simplify things as well. Existing widgets will be updated automatically, but if you are doing any "associate with field" commands at viewing time, you will need to change those from using a cookie to using this new playlist item key field.

  • When a client asks a media repo driver for cover art via an item cookie, if the repo doesn't set item level cover art, and the collection the item is being referenced is a playlist, find the original (real) collection that the item belongs to and use that cookie to find the cover art to return to the client. This way, they will get the item's original cover art instead of the playlist's cover art even if the repo driver doesn't directly support per-item art.

  • Update the Android room config based app to work with the recent media renderer changes. It will only work with V2 versions of the drivers now (and this version of CQC or above), so if you are using media stuff, you'll need to move to the V2 versions of the drivers, update your room config, and re-generate the interfaces. This is mostly just to get it working again, but it also now, on the Now Playing screen can have a single Play/Pause button that is media state aware, since it can now know reliably what the state of the player is.

  • Update the auto-generated templates to take advantage of scrollable overlays and support five weather forecast days, moving the forecast stuff into a sub-overlay that can be scrolled.

  • The check box widget doesn't include the overlay images in the pressed effect, which kind of ruins the effect.

  • Now that we can know generically the playback state of renderers, update the auto-generated interfaces to use a single check box for play/pause instead of two separate buttons.
Dean Roddey
Explorans limites defectum
Version 4.3.922 is posted. This one has some trailing small improvements and fixes.
  • Upgrade the CAB to allow the user to set a pattern string on it that's used to decide what info to show in the text for the elements. The caption text pattern is composed of the usual %(x) type of replacement tokens. If not set, then a default pattern is used. There is a command to set a new caption pattern. See below for the list of tokens supported. It will only look for one instance of each token, so if you use any more than once the once after the first one won't be replaced. See below for details.

  • Update the default CAB item text so that (if no caption pattern is set) it displays the title name on a first line, and then either the artist name on a second line or if sorted by one of the more reasonably displayable sort fields, display that on the second line. Though, if the name is long enough to span more than one line, it may push the second display off the visible item area.

  • On the auto-generated interfaces, sacrifice a column of the CAB in order to make the above change work better, to almost always allow both the artist and album name to be displayed, though a really long album title can still push the second value off the bottom of the available text area.

  • The numeric text widget doesn't display properly in the Intf. Designer. The correct settings are there, but when it comes up it doesn't use them to provide a faux display of a number for design purposes.

  • Update the Variables driver to allow specific variables to be marked as persistent, so that the value will be remembered across system restarts. Effectively it will automatically update the default value for the field. Fields that are not marked as persistent can still have their default set manually if desired. Also update the client side driver to poll both the current and default values so that the default will be picked up if it is changed from somewhere else while the field is displayed.

  • Somewhere along the line the toolbar widget stopped showing the button contents in the designer. That makes it harder to get the look right.

  • During the recent changes to support all the inertial scrolling stuff, the F/X text stuff got broken, in that the regular text that is drawn over the top of the drop shadow is not moving correctly in a lot of cases. Sometimes it's moving with the shadow, when only the shadow should have been moving.

The list of CAB text tokens currently support is:
  • A - Artist name
  • B - Bit depth
  • C - Channels
  • N - Item name
  • R - Bit rate
  • S - Sample rate
  • U - User rating
  • Y - Year
  • + - A new line

Don't forget to escape the % character when using replacement tokens in a command parameter, so \%(A) for instance, else the action engine will try to expand the token itself and fail.

The new caption will only be used the next time the CAB updates. So you can set it in OnPreload and it will be used in the first update. After that, if you change the caption, and want it to update, you have to change the display in some way. So typically you'd use it conjunction with changing the sort order, setting the new pattern first, then the sort order which will cause the CAB to update and use the new pattern. The pattern used by each page is saved, so it will be restored appropriately as you pop pages back off the stack via the Back or Up commands. So the set pattern only applies to new pages pushed onto the stack. NOTE that this only is used at the top level. Within expanded out title sets, the collection name is always the text used.
Dean Roddey
Explorans limites defectum
Version 4.3.923 is posted. It's mostly to get some changes in place to help third party renderer drivers more easily support the recent media renderer changes, though it has some other fixes as well.

The same concerns still apply, that if you are using any third party media renderers, be cause to check whether they've been updated before you upgrade if you really need that functionality.
  • The set point setting commands (and field writes) of the Leviton Z-Wave driver are not working. For whatever reason I ended up implementing a 1 decimal precision mode, and that may be the issue. Go back to just the plain, integral precision.

  • The new method on the CML playlist manager class that returns the field defs for all standard renderer fields should be a const method.

  • The playlist manager's "select by id" method should check to see if the selected one is already the current item, and if so return NoAction, since there's no need for the calling rendeder to do anything.

  • Add a GetCurRendArt() method to the CML CQCMediaInfo class, to make it easy for user code to query a renderer's current cover art if they want to, though nothing needs it currently.

  • Move back to getting current renderer cover art via the renderer itself, instead of going directly to the repository. This allows for more flexibiltiy on the part of the renderers as to how they get cover art.

    This required changing the GetCoverArt() and GetCoverArtEx() methods of the CQCMediaInfo CML class (used by CML renderers to get art from repos), because it couldn't support the required new functionality otherwise. The title/collection flag was removed. It now just goes by the type of cookie passed, since it has to support title, collection or item cookies. Since I had to change it anyway, it made sense to just dump the Ex version since it only existed to add a large/thumb flag. I just moved that flag to the other one and dumped the Ex version, leaving just one method.

  • Added a GetCurCookie() method to the playlist manager, to get the repo moniker and cookie for the current item (it'll get the item cookie if available, else the collection cookie.) This makes it easy to get the info you need in order to invoke The GetCoverArt() method above. See the base renderer class for details since it uses these calls.

  • Update the C++ and CML base renderer classes to support the new functionality above on behalf of all of the derived renderer classes.

  • Some recent changes had a bug where a cookie was being built up such that the item id was being formatted into the cookie in decimal radix, when they are supposed to be hex. This was causing them to be mis-interpreted later when the cookie was parsed. It could cause an index error, or it could cause the wrong item to be accessed.

  • The overlay scrolling isn't working in RIVA mode. It was causing log errors because the overlay widget was trying to do the actual slide scroll in RIVA mode, but it's not supported. It can't do the actual slide, but it should still redraw in the new scrolled position.

  • The XP based gesture handler wasn't being copied into the release, so it wasn't available for use.

Dean Roddey
Explorans limites defectum
Version 4.3.924 is posted. It has some small improvements and fixes, on the way towards a release. This version won't work with the iOS room config app since changes have been made that it will have to accommodate. They aren't particularly significant, but some stuff won't work, like getting cover art. In order take things up a notch, some changes had to be made in those areas and the room config based apps will have to be adjusted slightly. I'll post an updated Android app here in a minute or two that works with this version (2013/09/05.)
  • Add an offset parameter ot the System::IsNight action command. It's a signed value in minutes, limited to -60 to +60. A negative value reduces the range and positive extends the range. So, if sunset is 6PM and sunrise is 6AM, then a -60 value would reduce the night range from 7PM to 5AM, (an hour after sunset and before sunrise) and +60 would extend the range 5PM to 7AM (an hour before sunset and after sunrise.)

  • The recent changes required to support intertial scrolling (which requires drawing things alpha transparent) messed up the alignment when doing the f/x style text style. It would always center multi-line text, instead of honoring the set h/v justification.

  • Update the XMLGW server and the Android room config app to deal with the moving of querying of renderer current cover art back to the renderer itself. This once again involves some changes, this time to the XML GW's XML interface. As with the C++ and CML sides of things, we now have separate calls in the XML GW to get art from a repo vs. to get current art from a renderer.

  • There is a bug in the CML compiler that can incorrectly change the value of things it shouldn't. If you do "If (!SomeValue)", the compiler was trying to be efficient and just negating the boolean value on the top of the stack in place if it was a temporary value. But this is wrong, because a temporary value might be an [In] parameter created by an in line comparison, e.g. CallIt(SomeParm = "Stupid"). This causes a temp boolean value to be passed into CallIt(). But that incoming parameter might be referenced multiple times in the called method, so we can't allow the value to be changed. It's unlikely this fix will affect anything, since it would have caused obvious logical errors if you had done something that caused it to affect your code and you'd have either worked around it or reported it.

  • In the action editor, the value selector popup for enumerated string fields doesn't select the previous value in the list, which makes it easy to make a mistake.

The changes in the XML interface for cover art are that there are now two separate calls, one to get art for preview from a repo driver, and the other to get current art from a renderer. The DTD for these (and the reply msg which is the same for either) is:

<!ATTLIST CQCGW:QueryMediaRepoArt
          CQCGW:Moniker CDATA #REQUIRED
          CQCGW:Size (Sml | Lrg) 'Sml'
          CQCGW:Cookie CDATA #REQUIRED>

<!ATTLIST CQCGW:QueryMediaRendArt
          CQCGW:Size (Sml | Lrg) 'Sml'
          CQCGW:Moniker CDATA #REQUIRED>

          CQCGW:Type (PNG | JPEG | BMP | Unknown) #REQUIRED>

You can ask for small or larger art in either case now, and there's no cookie type indicator in the repo query anymore. It'll just go by the type of cookie you provide, since it can now be title, collection, or item.) Typically item is preferred now since that will get item level art if available, else from the containing collection, and it gets the per-item stuff when playing from a playlist now.
Dean Roddey
Explorans limites defectum
Version 4.3.925 is posted. It is just to get a couple fixes and a small improvement that folks need.
  • Change the defaulting of gesture handing for non-multi-touch enabled systems. In those cases, make the default be to not load any gesture handling. Only do it if the CID_GESTHANDLER environmental variable is set to XP. As before, if it is set to XP, this will override any multi-touch gesture handling and force the mouse based faux gestures to be used instead.

  • The Z-Wave Leviton driver is throwing an exception if it fails to poll a unit, instead of just logging the error (if verbose) and marking the unit as having failed (which may put it into error state if it's failed a couple previously.) This causes it to cycle the connection if a unit poll fails, which is not what we want.

  • There are some situations where it may be desirable to have overlays always scroll by pages at a time, so add a 'no velocity' option to the the overlay. By default it will be velocity sensitive, but this allows the velocity stuff to be disabled when desired. If you check no velocity, you can set the percentage (of the visible area) to scroll in each direction, in increments of 10 percent.
Dean Roddey
Explorans limites defectum
Version 4.3.926 is posted. It just includes some fixes to a few things that have been found, and a final disposition on the gesture supporting loading scheme.
  • The Android room app, though it is checking to see if movie/music monikers have been set before adding those fields to the poll list, the check isn't correct. The values are getting set to empty strings when the XML is parsed, but the code is looking for nulls. So force empty monikers back to null during the XML parsing. This change is in the 20130910 version (Android app version 1.7).

  • The XMLGW server shouldn't log errors about setting the poll list unless in verbose mode, else a client in a loop can just fill up the logs.

  • Update the gesture support loading to follow the rules listed down below.

  • There has been a long-standing hot-key conflict in the Intf. Designer that I keep forgetting to fix. Ctrl-Alt-H and Ctrl-Alt-V were always toggles for the horz/vert text alighment. But, at some point, Ctrl-Alt-V got hijacked for running a verification pass. So put the Ctrl-Alt-V back to vertical text alightment, so that those two remain symmetrical. Change verification to Ctrl-Shift-V.

  • There were two different commands being used by the Variables driver to set the default field value. One was publically visible and the other was internal. Not sure how that happened, but I got rid of one so there would only be a single one, but apparently got rid of the wrong one, breaking existing uses of that command. Swap it back the other way to keep it backwards compatible.

The load of gesture support now follows these rules wrt to the CID_GESTHANDLER environment variable vs. hardware and whatnot:

  • No environment var. If on MT hardware, multi-touch gestures, else no gestures.
  • If the var is set to None, then no gestures no matter what
  • If set to Left or Right, then it does faux gestures using (respectively) left button for gestures/right for clicks, or right button for gestures/left for clicks. This overrides MT gestures even if on MT hardware.
Dean Roddey
Explorans limites defectum
Version 4.3.927, which just has one last minute new feature, and a few small tweaks and fixes.
  • Add a new "Driver Backdoor Image" widget. This widget can query arbitrary image data from any driver via a backdoor memory buffer driver query. A driver has to provide a field that will change value any time that the image data needs to be re-queried, and a 'data name' value for each type of image it provides access to (potentially multiple fields as well if they don't always change at the same time.) When the field changes, the widget queries new image data and displays it. It can be used, for instance, by a media renderer to provide ancillary image content beyond the standard cover art, such as fan art or poster art. It can support large or small art, and the widget sends a query type of either CQCQueryLrgDrvImg or CQCQuerySmlDrvImg, depending on which the user asks for. If the driver only supports one size, it can return the same thing for either.

  • Allow suppression of inertial scrolling on a per-widget basis. Add a new flag in the Base attributes tab for this. When set, the widget (if scrollable) will just do jump type transitions, instead of a scroll.

  • The new 'persistent value' check box on the variables driver field definition dialog isn't correctly updating when selecting a new field. And, while there, add an indication of persistence on the main screen as well.

  • Change the overlay so that, when loading a new template, if the overlay has explicitly set a background image, that that image is used. Else, it will use whatever is set in each loaded template.
Dean Roddey
Explorans limites defectum
Version 4.3.928 is posted. This one takes care of some reported and caught issues, on the way towards tightening up for a new release.
  • The changes to the variables driver to allow for automatic persistence updated it so that it just writes out the configuration when the driver is stopped during shutdown. This is very efficient but has the possibility of losing the changes worst case. Update it to track changes and set a minute poll time. Any changes that have been made in that last minute are written out. This insures that, worst case, a minute's worth is lost, but also insures efficiency in the fact of quickly changing fields.

  • For those scenarios where there is no gesture support, add a Scroll command to the overlay, to allow for button based scrolling of overlay content where needed.

  • The CAB was not honoring the 'no inertia' flag in a couple places.

  • Due to a race condition in setting the end of media status, the UPnP renderer based drivers were skipping a song when the current one ended. The base class was querying the state, before the UPnP system sent the driver a new status, so the old stopped/ended status was seen. It just needs to set a new (optimistic) running status before it starts playback, so that the base class will see that until proven otherwise with a failure reported from UPnP.

  • There are still issues with the alpha based text drawing, required for inertial scrolling, in getting the alpha channel right. This is really tricky since Windows isn't designed for this, but by standing on one foot and burning a candle while coding I got it to work right.

  • The recent gesture oriented updates broke the pressed image emphasis image support on the Advanced Media Item Browser.

  • The Calendar widget got whacked during the required updates to support gestures. It was starting on the wrong day when laying out the day slots.
Dean Roddey
Explorans limites defectum
Version 4.3.929 is posted, which just provides some more fixes of reported goobers and one small new addition.
  • The h/v list browser based widgets aren't honoring the no inertia flag in the 'scroll to index' command.

  • Add scroll buttons for the weather overlay on the auto-generated content, for folks not using gestures.

  • Add an OnScroll event to the overlay widget, so that you can react to it being scrolled. This is full of special case issues because of the fact that the actions of the overlay are really set by the templates loaded into it, and because of that they are assumed to run in the context of the loaded template, and therefore don't have access to things outside of it, but the OnScroll action needs to have access to its own sibling widgets. But I have dealt with these special cases.

  • A few more of the widget types which are of the type that don't always require that any action events they support be configured, should be marked as 'action optional' so that the widget config dialog doesn't complain if you haven't configured any actions for them. Do the overlay (now that it has its own OnScroll event), the progress bar which would only likely require one if being used with a writeable field, and the generic H/V list browsers.

  • The security area in the room config (from the base template) is not being selected automatically upon entry to the security tab for a newly created room. You have to override, and the un-override to get it to show up.
Dean Roddey
Explorans limites defectum

Possibly Related Threads...
Thread Author Replies Views Last Post
  5.5 Beta Discussions Thread Dean Roddey 8 330 07-07-2019, 11:32 AM
Last Post: Dean Roddey
  Official 5.5 Beta Release Thread Dean Roddey 2 154 07-07-2019, 11:28 AM
Last Post: Dean Roddey
  Official 5.4 Beta Discussion Thread Dean Roddey 441 43,813 06-15-2019, 02:33 AM
Last Post: Bugman
  Official 5.4 Beta Release Thread Dean Roddey 55 7,843 06-07-2019, 07:02 PM
Last Post: Dean Roddey
  Official 5.3 Beta Discussion Thread Dean Roddey 815 154,279 07-05-2018, 12:44 PM
Last Post: Dean Roddey
  Official 5.3 Release Thread Dean Roddey 27 8,261 07-05-2018, 12:44 PM
Last Post: Dean Roddey
  Official 5.2 Beta Discussion Thread Dean Roddey 244 89,559 10-14-2017, 07:57 PM
Last Post: Dean Roddey
  Official 5.2 Beta Release Thread Dean Roddey 13 9,031 10-09-2017, 06:49 PM
Last Post: Dean Roddey
  Official 5.1 Beta Discussion Thread Dean Roddey 453 200,257 05-16-2017, 03:45 PM
Last Post: Dean Roddey
  Official 5.1 Beta Release Thread Dean Roddey 28 19,880 05-12-2017, 05:44 PM
Last Post: Dean Roddey

Forum Jump:

Users browsing this thread: 1 Guest(s)