Recommended Posts

Yep, this build is really good. It works like a charm in Windows 10 14328 as well as in 10586 :laugh:

 

Raphaël, using the spacebar to pause the playback works unless I click on some other control of the UI first. If I do so, when I press spacebar, it doesn't pause the song I'm listening to, but instead it triggers whatever I have previously clicked on. I understand it totally makes sense, but I just want to let you know in case you want to make some changes so as to make sure that the spacebar always works to just pause the playback.

 

Cheers!

On ‎25‎/‎04‎/‎2016 at 9:37 AM, Tuskd said:

Hey Raphael! Great release. But I am having a problem with my Philips SHB7000 wireless headset and Dopamine. When using my headset's media keys, Next and Previous works as expected but Play/Pause doesn't work. Its not picked up by your Keyboardtest. Groove Music has no problem with my headset.
 

^ For Next and Previous. Nothing recorded for Play/Pause.

That one is difficult. Each time this issue is reported, I look it up on the internet, and realize there is no information about it. I'll log a bug and look into it again when I can.

  • Like 2
9 minutes ago, Jackaluichi said:

Yep, this build is really good. It works like a charm in Windows 10 14328 as well as in 10586 :laugh:

 

Raphaël, using the spacebar to pause the playback works unless I click on some other control of the UI first. If I do so, when I press spacebar, it doesn't pause the song I'm listening to, but instead it triggers whatever I have previously clicked on. I understand it totally makes sense, but I just want to let you know in case you want to make some changes so as to make sure that the spacebar always works to just pause the playback.

 

Cheers!

Thanks for reporting that. It indeed makes sense, but is annoying :) I'd like space to toggle play and pause regardless of the UI component which is clicked. I've logged a bug.

  • Like 1
49 minutes ago, Raphaël G. said:

That one is difficult. Each time this issue is reported, I look it up on the internet, and realize there is no information about it. I'll log a bug and look into it again when I can.

 

42 minutes ago, Raphaël G. said:

Thanks for reporting that. It indeed makes sense, but is annoying :) I'd like space to toggle play and pause regardless of the UI component which is clicked. I've logged a bug.

I'm confident you'll eventually find a workaround :yes:

Hi Raphael,

 

I'm seeing an issue with the search functionality. It seems like the artist search works just based off of the 'Album Artist' tag.

 

So if I have an album that has an Artist tag, but a blank album artist tag, that album does not show up in any search results (only albums that also have the album artist tag do). see attached screenshot for example

Untitled.png

 

 

Also, on that note it would be nice if on the song list if the Artist was displayed if the album artist tag is blank (rather than showing unknown album artist). I have lots of albums that have an artist tag but no album artist tag, so in songs lists it can be a little annoying to see 'unknown album artist' under the album name for all of them. Or maybe an option to choose whether to display artist or album artist there.

Edited by ViperAFK
On ‎29‎/‎04‎/‎2016 at 1:14 AM, dakn said:

Hi Raphaël,

 

I've been noticing a bug where I click on a genre and no albums show up although the albums show in the list view. Sometimes it might even be that only some albums show, but not all.

 

bugs.PNG

What happens when you scroll up? There is a know issue where nothing is shown when you scroll to the bottom of the album list, then select another artist or genre, then albums are not shown anymore until you scroll up.

On ‎27‎/‎04‎/‎2016 at 0:20 AM, ViperAFK said:

Hi Raphael,

 

I'm seeing an issue with the search functionality. It seems like the artist search works just based off of the 'Album Artist' tag.

 

So if I have an album that has an Artist tag, but a blank album artist tag, that album does not show up in any search results (only albums that also have the album artist tag do). see attached screenshot for example

Untitled.png

 

 

Also, on that note it would be nice if on the song list if the Artist was displayed if the album artist tag is blank (rather than showing unknown album artist). I have lots of albums that have an artist tag but no album artist tag, so in songs lists it can be a little annoying to see 'unknown album artist' under the album name for all of them. Or maybe an option to choose whether to display artist or album artist there.

I've created a bug and task for this. Thanks for reporting.

  • 2 weeks later...

Hi everyone. In a day or 2 I'll release a new build. No new features, but quite some bug fixes. This is the current changelog:

 

- Added Traditional Chinese translation
- Added Simplified Chinese translation
- Languages are now ordered alphabetically in the language picker
- Fixed a bug in the auto updater
- Fixed window ToolTips not updated when changing language
- Fixed playback starting when switching default audio device even when playing nothing
- Fixed a bug where sorting headers were not updated when changing language
- Fixed a bug where a song, which is in more than 1 playlist, was removed from the wrong playlist.
- Fixed a bug displaying the year in the album ToolTip
- Fixed a bug where the albums list sometimes appears empty even when it contains albums
- Theme selection is changed and translated to the selected language
- Pressing [Space] on the keyboard doesn't start or stop songs anymore. It causes too many conflicts.

5 hours ago, Raphaël G. said:

Hi everyone. In a day or 2 I'll release a new build. No new features, but quite some bug fixes. This is the current changelog:

 

- Added Traditional Chinese translation
- Added Simplified Chinese translation
- Languages are now ordered alphabetically in the language picker
- Fixed a bug in the auto updater
- Fixed window ToolTips not updated when changing language
- Fixed playback starting when switching default audio device even when playing nothing
- Fixed a bug where sorting headers were not updated when changing language
- Fixed a bug where a song, which is in more than 1 playlist, was removed from the wrong playlist.
- Fixed a bug displaying the year in the album ToolTip
- Fixed a bug where the albums list sometimes appears empty even when it contains albums
- Theme selection is changed and translated to the selected language
- Pressing [Space] on the keyboard doesn't start or stop songs anymore. It causes too many conflicts.

Great build coming our way! Thanks for the heads up, Raphaël!

 

I see the space thing is just a pita :rofl:

2 hours ago, Jackaluichi said:

Great build coming our way! Thanks for the heads up, Raphaël!

 

I see the space thing is just a pita :rofl:

Yeah I gave up on it. As soon as I made the space pressing a global thing (accessible from anywhere in the application) the search field conflicted with it. Each time you pressed space in the field, songs would play or pause. I didn't want to add ugly workarounds to try to detect the that the user is searching or not.

  • Like 1

Hi all!

 

A new build of Dopamine is available. This one brings a lot of bug fixes. This is the changelog:

 

16-05-2016: Dopamine 1.0.0.650 (Preview)

 

  • Added Traditional Chinese translation
  • Added Simplified Chinese translation
  • Added Greek translation
  • Languages are now ordered alphabetically in the language picker
  • Fixed a bug in the auto updater
  • Fixed window ToolTips not updated when changing language
  • Fixed playback starting when switching default audio device even when playing nothing
  • Fixed a bug where sorting headers were not updated when changing language
  • Fixed a bug where a song, which is in more than 1 playlist, was removed from the wrong playlist.
  • Fixed a bug displaying the year in the album ToolTip
  • Fixed a bug where the albums list sometimes appears empty even when it contains albums
  • Theme selection is changed and translated to the selected language
  • Pressing [Space] on the keyboard doesn’t start or stop songs anymore. It causes too many conflicts.

Info and download over here

  • Like 3
5 hours ago, Raphaël G. said:

Hi all!

 

A new build of Dopamine is available. This one brings a lot of bug fixes. This is the changelog:

 

16-05-2016: Dopamine 1.0.0.650 (Preview)

 

  • Added Traditional Chinese translation
  • Added Simplified Chinese translation
  • Added Greek translation
  • Languages are now ordered alphabetically in the language picker
  • Fixed a bug in the auto updater
  • Fixed window ToolTips not updated when changing language
  • Fixed playback starting when switching default audio device even when playing nothing
  • Fixed a bug where sorting headers were not updated when changing language
  • Fixed a bug where a song, which is in more than 1 playlist, was removed from the wrong playlist.
  • Fixed a bug displaying the year in the album ToolTip
  • Fixed a bug where the albums list sometimes appears empty even when it contains albums
  • Theme selection is changed and translated to the selected language
  • Pressing [Space] on the keyboard doesn’t start or stop songs anymore. It causes too many conflicts.

Info and download over here

Thank you Sir! If you are feeling competitive I thought you might like this, you can win a Surface Pro 4,

 

https://blog.rewards.msdn.microsoft.com/2016/03/28/pitch-your-continuum-idea/

 

Good Luck! :)

10 hours ago, Ravensky said:

Thank you Sir! If you are feeling competitive I thought you might like this, you can win a Surface Pro 4,

 

https://blog.rewards.msdn.microsoft.com/2016/03/28/pitch-your-continuum-idea/

 

Good Luck! :)

I'm afraid the deadline is already exceeded :rofl: Would have been great though, if I had a lot of time on my hands :) 

 

So what's next for Dopamine?

 

This build is rather good, quality wise. I'd like to release version 1.0 final as soon as I have confirmation that there are no critical issues left. After the release of 1.0, my focus will shift to the UWP version. Development on the desktop version will continue however. While the current focus is now 100% desktop, 0% UWP, I'd like to shift that to 20% desktop, 80% UWP for a short period of time. And once the UWP version is published, it should become 50% for both.

The 20% for the desktop version will allow fixing bugs and adding small features.

 

The UWP version will start simple and as a phone application only. Because I want to publish quickly, I won't spend time building an adaptive UI yet. The desktop version can fill that gap for now. Adaptive UI will be added later. The app will be polished and dynamic, just like the dekstop version. They will look very similar.

 

I'm having an issue where it will just crash when loading a new song. It happened twice on Friday, after I updated to 650. If I can reproduce it, what information do you want from me so that you can track it down?

 

 

Edit: It just happened again. Here's the last bit of the log.

 

 



2016-05-20 15:03:42.1558|Info|Dopamine.Application.ExecuteEmergencyStop|### FORCED STOP of Dopamine, version 1.0.0 (Build 640) ###
2016-05-20 15:54:02.3015|Info|Dopamine.Application.ExecuteStartup|### STARTING Dopamine, version 1.0.0 (Build 640), IsPortable = False ###
2016-05-20 15:54:05.3607|Info|Dopamine.Bootstrapper.InitializeWCFServices|CommandService was started successfully
2016-05-20 15:54:05.3607|Info|Dopamine.Bootstrapper.InitializeWCFServices|FileService was started successfully
2016-05-20 15:54:05.3807|Info|Dopamine.Bootstrapper.InitializeShell|Showing Main screen
2016-05-20 15:54:36.1260|Info|Dopamine.Views.Shell+VB$StateMachine_108_PerformClosingTasksAsync.MoveNext|Performing closing tasks
2016-05-20 15:54:36.2830|Info|Dopamine.Views.Shell+VB$StateMachine_108_PerformClosingTasksAsync.MoveNext|### STOPPING Dopamine, version 1.0.0 (Build 640) ###
2016-05-20 15:56:13.3371|Info|Dopamine.Application.ExecuteStartup|### STARTING Dopamine, version 1.0.0 (Build 650), IsPortable = False ###
2016-05-20 15:56:14.0412|Info|Dopamine.Views.Splash+VB$StateMachine_15_InitializeSettingsAsync.MoveNext|Upgrading settings
2016-05-20 15:56:15.6342|Info|Dopamine.Bootstrapper.InitializeWCFServices|CommandService was started successfully
2016-05-20 15:56:15.6492|Info|Dopamine.Bootstrapper.InitializeWCFServices|FileService was started successfully
2016-05-20 15:56:15.6662|Info|Dopamine.Bootstrapper.InitializeShell|Showing Main screen
2016-05-20 15:57:01.2848|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-20 16:01:26.8137|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-20 16:04:58.1787|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-20 16:07:56.5558|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-20 16:10:40.3400|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-20 16:10:57.5971|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-20 16:14:55.9644|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-20 16:25:57.6852|Error|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_96_TryPlayAsync.MoveNext|Could not play the file C:\Users\drewh\Music\16 Castle Attack.m4a. LoopMode=None, Shuffle=True. Exception: Interops::MFCreateSourceReaderFromURL caused an error: 0x80004005, "Unspecified error".. StackTrace:    at CSCore.MediaFoundation.MediaFoundationCore.CreateSourceReaderFromUrlNative(String url)
   at CSCore.MediaFoundation.MediaFoundationDecoder..ctor(String url)
   at CSCore.Codecs.CodecFactory.GetCodec(String filename)
   at Dopamine.Core.Audio.CSCorePlayer.InitializeSoundOut()
   at Dopamine.Core.Audio.CSCorePlayer.Play(String iFilename)
   at Dopamine.Common.Services.Playback.PlaybackService._Closure$__96-0._Lambda$__0()
   at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at Dopamine.Common.Services.Playback.PlaybackService.VB$StateMachine_96_TryPlayAsync.MoveNext()
2016-05-20 16:25:57.7193|Error|Dopamine.Application.ExecuteEmergencyStop|Unhandled Exception. Exception:
System.ArgumentNullException: Value cannot be null.
   at System.Threading.Monitor.Enter(Object obj)
   at CSCore.Win32.ComObject.Finalize()

Stack trace:
   at System.Threading.Monitor.Enter(Object obj)
   at CSCore.Win32.ComObject.Finalize()

2016-05-20 16:25:57.7193|Info|Dopamine.Application.ExecuteEmergencyStop|### FORCED STOP of Dopamine, version 1.0.0 (Build 650) ###
2016-05-23 08:53:28.8242|Info|Dopamine.Application.ExecuteStartup|### STARTING Dopamine, version 1.0.0 (Build 650), IsPortable = False ###
2016-05-23 08:53:35.3805|Info|Dopamine.Bootstrapper.InitializeWCFServices|CommandService was started successfully
2016-05-23 08:53:35.4886|Info|Dopamine.Bootstrapper.InitializeWCFServices|FileService was started successfully
2016-05-23 08:53:35.4886|Info|Dopamine.Bootstrapper.InitializeShell|Showing Main screen
2016-05-23 09:00:05.0453|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-23 09:03:23.6459|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-23 09:05:16.6869|Error|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_96_TryPlayAsync.MoveNext|Could not play the file C:\Users\drewh\Music\13 Pay The Man.m4a. LoopMode=None, Shuffle=True. Exception: Interops::MFCreateSourceReaderFromURL caused an error: 0x80004005, "Unspecified error".. StackTrace:    at CSCore.MediaFoundation.MediaFoundationCore.CreateSourceReaderFromUrlNative(String url)
   at CSCore.MediaFoundation.MediaFoundationDecoder..ctor(String url)
   at CSCore.Codecs.CodecFactory.GetCodec(String filename)
   at Dopamine.Core.Audio.CSCorePlayer.InitializeSoundOut()
   at Dopamine.Core.Audio.CSCorePlayer.Play(String iFilename)
   at Dopamine.Common.Services.Playback.PlaybackService._Closure$__96-0._Lambda$__0()
   at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at Dopamine.Common.Services.Playback.PlaybackService.VB$StateMachine_96_TryPlayAsync.MoveNext()
2016-05-23 09:05:16.7429|Error|Dopamine.Application.ExecuteEmergencyStop|Unhandled Exception. Exception:
System.ArgumentNullException: Value cannot be null.
   at System.Threading.Monitor.Enter(Object obj)
   at CSCore.Win32.ComObject.Finalize()

Stack trace:
   at System.Threading.Monitor.Enter(Object obj)
   at CSCore.Win32.ComObject.Finalize()

2016-05-23 09:05:16.7529|Info|Dopamine.Application.ExecuteEmergencyStop|### FORCED STOP of Dopamine, version 1.0.0 (Build 650) ###

 

Edited by greenwizard88
added log

well, I found that cycling through a list of songs in the now playing view will eventually result in a crash

 

2016-05-24 07:43:12.6728|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-24 07:43:23.1318|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-24 07:43:37.6032|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-24 07:43:57.4208|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-24 07:44:03.3219|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-24 07:44:36.5321|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-24 07:44:43.2048|Error|Dopamine.Application.ExecuteEmergencyStop|Unhandled Exception. Exception:
System.NullReferenceException: Object reference not set to an instance of an object.
   at Dopamine.Core.Audio.CSCorePlayer.GetFFTFrequencyIndex(Int32 frequency)
   at WPFSoundVisualizationLib.SpectrumAnalyzer.UpdateBarLayout()
   at WPFSoundVisualizationLib.SpectrumAnalyzer.OnRender(DrawingContext dc)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.StackPanel.StackArrangeHelper(IStackMeasure arrangeElement, IStackMeasureScrollData scrollData, Size arrangeSize)
   at System.Windows.Controls.StackPanel.ArrangeOverride(Size arrangeSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.Grid.ArrangeOverride(Size arrangeSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at MS.Internal.Helper.ArrangeElementWithSingleChild(UIElement element, Size arrangeSize)
   at System.Windows.Controls.ContentPresenter.ArrangeOverride(Size arrangeSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.Border.ArrangeOverride(Size finalSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.Control.ArrangeOverride(Size arrangeBounds)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at MS.Internal.Helper.ArrangeElementWithSingleChild(UIElement element, Size arrangeSize)
   at System.Windows.Controls.ContentPresenter.ArrangeOverride(Size arrangeSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.Control.ArrangeOverride(Size arrangeBounds)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.Grid.ArrangeOverride(Size arrangeSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.ContextLayoutManager.UpdateLayout()
   at System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)
   at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
   at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
   at System.Windows.Media.MediaContext.AnimatedRenderMessageHandler(Object resizedCompositionTarget)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

Stack trace:
   at Dopamine.Core.Audio.CSCorePlayer.GetFFTFrequencyIndex(Int32 frequency)
   at WPFSoundVisualizationLib.SpectrumAnalyzer.UpdateBarLayout()
   at WPFSoundVisualizationLib.SpectrumAnalyzer.OnRender(DrawingContext dc)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.StackPanel.StackArrangeHelper(IStackMeasure arrangeElement, IStackMeasureScrollData scrollData, Size arrangeSize)
   at System.Windows.Controls.StackPanel.ArrangeOverride(Size arrangeSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.Grid.ArrangeOverride(Size arrangeSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at MS.Internal.Helper.ArrangeElementWithSingleChild(UIElement element, Size arrangeSize)
   at System.Windows.Controls.ContentPresenter.ArrangeOverride(Size arrangeSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.Border.ArrangeOverride(Size finalSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.Control.ArrangeOverride(Size arrangeBounds)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at MS.Internal.Helper.ArrangeElementWithSingleChild(UIElement element, Size arrangeSize)
   at System.Windows.Controls.ContentPresenter.ArrangeOverride(Size arrangeSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.Control.ArrangeOverride(Size arrangeBounds)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.Grid.ArrangeOverride(Size arrangeSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.ContextLayoutManager.UpdateLayout()
   at System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)
   at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
   at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
   at System.Windows.Media.MediaContext.AnimatedRenderMessageHandler(Object resizedCompositionTarget)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

2016-05-24 07:44:43.2048|Info|Dopamine.Application.ExecuteEmergencyStop|### FORCED STOP of Dopamine, version 1.0.0 (Build 650) ###
2016-05-24 07:44:43.3337|Info|Dopamine.Views.Shell+VB$StateMachine_109_PerformClosingTasksAsync.MoveNext|Performing closing tasks

 

On ‎23‎/‎05‎/‎2016 at 2:55 PM, greenwizard88 said:

I'm having an issue where it will just crash when loading a new song. It happened twice on Friday, after I updated to 650. If I can reproduce it, what information do you want from me so that you can track it down?

 

 

Edit: It just happened again. Here's the last bit of the log.

 

 


2016-05-20 15:03:42.1558|Info|Dopamine.Application.ExecuteEmergencyStop|### FORCED STOP of Dopamine, version 1.0.0 (Build 640) ###
2016-05-20 15:54:02.3015|Info|Dopamine.Application.ExecuteStartup|### STARTING Dopamine, version 1.0.0 (Build 640), IsPortable = False ###
2016-05-20 15:54:05.3607|Info|Dopamine.Bootstrapper.InitializeWCFServices|CommandService was started successfully
2016-05-20 15:54:05.3607|Info|Dopamine.Bootstrapper.InitializeWCFServices|FileService was started successfully
2016-05-20 15:54:05.3807|Info|Dopamine.Bootstrapper.InitializeShell|Showing Main screen
2016-05-20 15:54:36.1260|Info|Dopamine.Views.Shell+VB$StateMachine_108_PerformClosingTasksAsync.MoveNext|Performing closing tasks
2016-05-20 15:54:36.2830|Info|Dopamine.Views.Shell+VB$StateMachine_108_PerformClosingTasksAsync.MoveNext|### STOPPING Dopamine, version 1.0.0 (Build 640) ###
2016-05-20 15:56:13.3371|Info|Dopamine.Application.ExecuteStartup|### STARTING Dopamine, version 1.0.0 (Build 650), IsPortable = False ###
2016-05-20 15:56:14.0412|Info|Dopamine.Views.Splash+VB$StateMachine_15_InitializeSettingsAsync.MoveNext|Upgrading settings
2016-05-20 15:56:15.6342|Info|Dopamine.Bootstrapper.InitializeWCFServices|CommandService was started successfully
2016-05-20 15:56:15.6492|Info|Dopamine.Bootstrapper.InitializeWCFServices|FileService was started successfully
2016-05-20 15:56:15.6662|Info|Dopamine.Bootstrapper.InitializeShell|Showing Main screen
2016-05-20 15:57:01.2848|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-20 16:01:26.8137|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-20 16:04:58.1787|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-20 16:07:56.5558|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-20 16:10:40.3400|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-20 16:10:57.5971|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-20 16:14:55.9644|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-20 16:25:57.6852|Error|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_96_TryPlayAsync.MoveNext|Could not play the file C:\Users\drewh\Music\16 Castle Attack.m4a. LoopMode=None, Shuffle=True. Exception: Interops::MFCreateSourceReaderFromURL caused an error: 0x80004005, "Unspecified error".. StackTrace:    at CSCore.MediaFoundation.MediaFoundationCore.CreateSourceReaderFromUrlNative(String url)
   at CSCore.MediaFoundation.MediaFoundationDecoder..ctor(String url)
   at CSCore.Codecs.CodecFactory.GetCodec(String filename)
   at Dopamine.Core.Audio.CSCorePlayer.InitializeSoundOut()
   at Dopamine.Core.Audio.CSCorePlayer.Play(String iFilename)
   at Dopamine.Common.Services.Playback.PlaybackService._Closure$__96-0._Lambda$__0()
   at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at Dopamine.Common.Services.Playback.PlaybackService.VB$StateMachine_96_TryPlayAsync.MoveNext()
2016-05-20 16:25:57.7193|Error|Dopamine.Application.ExecuteEmergencyStop|Unhandled Exception. Exception:
System.ArgumentNullException: Value cannot be null.
   at System.Threading.Monitor.Enter(Object obj)
   at CSCore.Win32.ComObject.Finalize()

Stack trace:
   at System.Threading.Monitor.Enter(Object obj)
   at CSCore.Win32.ComObject.Finalize()

2016-05-20 16:25:57.7193|Info|Dopamine.Application.ExecuteEmergencyStop|### FORCED STOP of Dopamine, version 1.0.0 (Build 650) ###
2016-05-23 08:53:28.8242|Info|Dopamine.Application.ExecuteStartup|### STARTING Dopamine, version 1.0.0 (Build 650), IsPortable = False ###
2016-05-23 08:53:35.3805|Info|Dopamine.Bootstrapper.InitializeWCFServices|CommandService was started successfully
2016-05-23 08:53:35.4886|Info|Dopamine.Bootstrapper.InitializeWCFServices|FileService was started successfully
2016-05-23 08:53:35.4886|Info|Dopamine.Bootstrapper.InitializeShell|Showing Main screen
2016-05-23 09:00:05.0453|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-23 09:03:23.6459|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-23 09:05:16.6869|Error|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_96_TryPlayAsync.MoveNext|Could not play the file C:\Users\drewh\Music\13 Pay The Man.m4a. LoopMode=None, Shuffle=True. Exception: Interops::MFCreateSourceReaderFromURL caused an error: 0x80004005, "Unspecified error".. StackTrace:    at CSCore.MediaFoundation.MediaFoundationCore.CreateSourceReaderFromUrlNative(String url)
   at CSCore.MediaFoundation.MediaFoundationDecoder..ctor(String url)
   at CSCore.Codecs.CodecFactory.GetCodec(String filename)
   at Dopamine.Core.Audio.CSCorePlayer.InitializeSoundOut()
   at Dopamine.Core.Audio.CSCorePlayer.Play(String iFilename)
   at Dopamine.Common.Services.Playback.PlaybackService._Closure$__96-0._Lambda$__0()
   at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at Dopamine.Common.Services.Playback.PlaybackService.VB$StateMachine_96_TryPlayAsync.MoveNext()
2016-05-23 09:05:16.7429|Error|Dopamine.Application.ExecuteEmergencyStop|Unhandled Exception. Exception:
System.ArgumentNullException: Value cannot be null.
   at System.Threading.Monitor.Enter(Object obj)
   at CSCore.Win32.ComObject.Finalize()

Stack trace:
   at System.Threading.Monitor.Enter(Object obj)
   at CSCore.Win32.ComObject.Finalize()

2016-05-23 09:05:16.7529|Info|Dopamine.Application.ExecuteEmergencyStop|### FORCED STOP of Dopamine, version 1.0.0 (Build 650) ###

 

Could you send me this file "C:\Users\drewh\Music\13 Pay The Man.m4a"?

On ‎24‎/‎05‎/‎2016 at 2:11 PM, Ned said:

well, I found that cycling through a list of songs in the now playing view will eventually result in a crash

 


2016-05-24 07:43:12.6728|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-24 07:43:23.1318|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-24 07:43:37.6032|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-24 07:43:57.4208|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-24 07:44:03.3219|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-24 07:44:36.5321|Info|Dopamine.Common.Services.Playback.PlaybackService+VB$StateMachine_81_SaveTrackStatisticsAsync.MoveNext|Saved Track Statistics
2016-05-24 07:44:43.2048|Error|Dopamine.Application.ExecuteEmergencyStop|Unhandled Exception. Exception:
System.NullReferenceException: Object reference not set to an instance of an object.
   at Dopamine.Core.Audio.CSCorePlayer.GetFFTFrequencyIndex(Int32 frequency)
   at WPFSoundVisualizationLib.SpectrumAnalyzer.UpdateBarLayout()
   at WPFSoundVisualizationLib.SpectrumAnalyzer.OnRender(DrawingContext dc)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.StackPanel.StackArrangeHelper(IStackMeasure arrangeElement, IStackMeasureScrollData scrollData, Size arrangeSize)
   at System.Windows.Controls.StackPanel.ArrangeOverride(Size arrangeSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.Grid.ArrangeOverride(Size arrangeSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at MS.Internal.Helper.ArrangeElementWithSingleChild(UIElement element, Size arrangeSize)
   at System.Windows.Controls.ContentPresenter.ArrangeOverride(Size arrangeSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.Border.ArrangeOverride(Size finalSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.Control.ArrangeOverride(Size arrangeBounds)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at MS.Internal.Helper.ArrangeElementWithSingleChild(UIElement element, Size arrangeSize)
   at System.Windows.Controls.ContentPresenter.ArrangeOverride(Size arrangeSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.Control.ArrangeOverride(Size arrangeBounds)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.Grid.ArrangeOverride(Size arrangeSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.ContextLayoutManager.UpdateLayout()
   at System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)
   at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
   at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
   at System.Windows.Media.MediaContext.AnimatedRenderMessageHandler(Object resizedCompositionTarget)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

Stack trace:
   at Dopamine.Core.Audio.CSCorePlayer.GetFFTFrequencyIndex(Int32 frequency)
   at WPFSoundVisualizationLib.SpectrumAnalyzer.UpdateBarLayout()
   at WPFSoundVisualizationLib.SpectrumAnalyzer.OnRender(DrawingContext dc)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.StackPanel.StackArrangeHelper(IStackMeasure arrangeElement, IStackMeasureScrollData scrollData, Size arrangeSize)
   at System.Windows.Controls.StackPanel.ArrangeOverride(Size arrangeSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.Grid.ArrangeOverride(Size arrangeSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at MS.Internal.Helper.ArrangeElementWithSingleChild(UIElement element, Size arrangeSize)
   at System.Windows.Controls.ContentPresenter.ArrangeOverride(Size arrangeSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.Border.ArrangeOverride(Size finalSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.Control.ArrangeOverride(Size arrangeBounds)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at MS.Internal.Helper.ArrangeElementWithSingleChild(UIElement element, Size arrangeSize)
   at System.Windows.Controls.ContentPresenter.ArrangeOverride(Size arrangeSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.Control.ArrangeOverride(Size arrangeBounds)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.Controls.Grid.ArrangeOverride(Size arrangeSize)
   at System.Windows.FrameworkElement.ArrangeCore(Rect finalRect)
   at System.Windows.UIElement.Arrange(Rect finalRect)
   at System.Windows.ContextLayoutManager.UpdateLayout()
   at System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)
   at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
   at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
   at System.Windows.Media.MediaContext.AnimatedRenderMessageHandler(Object resizedCompositionTarget)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

2016-05-24 07:44:43.2048|Info|Dopamine.Application.ExecuteEmergencyStop|### FORCED STOP of Dopamine, version 1.0.0 (Build 650) ###
2016-05-24 07:44:43.3337|Info|Dopamine.Views.Shell+VB$StateMachine_109_PerformClosingTasksAsync.MoveNext|Performing closing tasks

 

Can you reproduce it? If yes, what steps did you perform?

On ‎23‎/‎05‎/‎2016 at 8:14 AM, Ned said:

The latest build is working really well so far.  Had some audio stuttering on the previous builds.  That seems to be gone and I've been using it for a few days now.  Awesome work.

I indeed worked on that. I gave the audio engine a higher priority.

Just cycling through songs in now playing mode will eventually cause it to crash for me.  Different tracks. Not reproducable on any particular track.  Don't know it it will do it if I don't hit the next button and just let it play on its own. Going to try that out for a while.  It only happens on the now playing view.

18 hours ago, Ned said:

Just cycling through songs in now playing mode will eventually cause it to crash for me.  Different tracks. Not reproducable on any particular track.  Don't know it it will do it if I don't hit the next button and just let it play on its own. Going to try that out for a while.  It only happens on the now playing view.

I'm not able to reproduce it. But I see where the bug happens and added a safeguard for the next build. That should fix it.

  • Like 1
4 hours ago, Ned said:

I found that it only happens when the spectrum analyzer is enabled and again, only in the now playing view.  I may be wrong, but it seems very hard to reproduce with it off.

That's what I was thinking when looking at the logs. It's trying to calculate the spectrum shape, but fails because an object is null. I couldn't reproduce it though. I'm not sure why. However my fix will catch this and prevent a crash.

  • Like 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Posts

    • OpenAI is now rolling out Lockdown Mode to more ChatGPT users by Pradeep Viswanathan Back in February, OpenAI first announced Lockdown Mode for users who want the most comprehensive protection from potential attacks. At the time of the announcement, the company mentioned that this feature was available to a small set of highly security-conscious users, including executives or security teams at leading organizations. Today, OpenAI announced that Lockdown Mode is now rolling out to all personal ChatGPT accounts, including Free, Go, Plus, and Pro, and also self-serve ChatGPT Business accounts. Users can enable the feature from ChatGPT Settings > Security when it is available for their account. When Lockdown Mode is enabled, ChatGPT limits or disables several features that connect to the web or external services. These include live web browsing, Deep Research, Agent Mode, and more. Here is the complete list of services that will be disabled in Lockdown Mode: Live web browsing: Web browsing is limited to accessing only cached content. Search results may be limited, unavailable, or stale. Image support: ChatGPT may not display images in regular responses or retrieve images from the web. Users can still upload image files, and image generation remains available where it is otherwise available. Deep research: Deep research is disabled. Agent mode: Agent mode is disabled. Canvas networking: Users cannot approve Canvas-generated code to access the network. File downloads: ChatGPT cannot download files for data analysis. ChatGPT can still operate on your manually uploaded files. It is important to note that Lockdown Mode does not completely block prompt injections from appearing in content that ChatGPT processes. For example, a malicious instruction could still be present in an uploaded file or cached web content. However, the mode is designed to reduce the ways such an attack could send sensitive information outside the conversation. Along with Lockdown Mode, OpenAI today also announced that the Active sessions feature is now available across ChatGPT accounts and workspace types. This feature allows users to review where their account is signed in across devices and end sessions if required. A session will have the following information displayed: Device or browser information. First-party app context, such as ChatGPT, Codex, or API Platform. Approximate location. Sign-in date and time. Whether the device is a trusted device. Whether it is your current session. OpenAI highlighted that the Active sessions feature will not be available for accounts linked to an organization’s single sign-on setup, including SAML or OIDC.
    • with LSTC and ESU, moving to w11 or linux because w10 suddenly will not work when in reality it works and its a better choice, of course there are also developers that only test in 11 or force you to have TPM and Secure boot for the sake of "better security" in games. or most likely people is buying new PC that only ship with 11
    • with LTSC and ESU there are still viable as a stable platform not that they care and let people deal with w11 crashing and burning every month support mean shet if the platform is trash
    • Most boring game ever. Repetitive, empty, predictable, and full of cliches. Total waste of time and money, IMO.
    • Mafia: The Old Country expansion Man of Honor announced, brings back Salieri from original by Pulasthi Ariyasinghe During Summer Game Fest, 2K and Hanger 13 brought out a new Mafia: The Old Country trailer, revealing the game's first expansion. Named Man of Honor, this is slated to add two new chapters to the Enzo storyline that the game follows. There is an iconic character returning to the series with this expansion, with players set to run into Ennio Salieri, the future Don of the Salieri crime family. Fans of the original Mafia, or its Definitive Edition remake, may remember that name as one of the biggest characters in the storyline. This expansion is set prior to his rise to being the kingpin in the City of Lost Heaven. "Set in Sicily during the winter of 1905, Enzo Favara has proven himself a reliable soldier of the Torrisi crime family in the months since his initiation," says the studio about the new chapters. "Now, the Don entrusts him and Cesare with a delicate assignment of assisting Ennio Salieri, a man of honor recently released from prison and intent on reclaiming what is his." Working at Salieri's side, players will be heading into fresh environments as they return to the role of Enzo as a high-ranking soldato. The studio also promises brand-new weapons, fresh vehicles, and charms to collect in this expansion. Moreover, the expansion will add new content to the updated Free Ride mode. Alongside new collectibles and locations, this will add more challenges to beat alongside Salieri, which are described as runs that will "test the skills of even the most elite mafiosi." The Mafia: The Old Country Man of Honor story expansion will release on August 14, 2026, across PC, Xbox Series X|S, and PlayStation 5. It will cost $10 for owners of the base game to jump into.
  • Recent Achievements

    • Rookie
      moog19 went up a rank
      Rookie
    • Mentor
      grik went up a rank
      Mentor
    • Dedicated
      JKR earned a badge
      Dedicated
    • One Year In
      CHUNWEI earned a badge
      One Year In
    • Conversation Starter
      FBSPL earned a badge
      Conversation Starter
  • Popular Contributors

    1. 1
      +primortal
      488
    2. 2
      PsYcHoKiLLa
      270
    3. 3
      Skyfrog
      76
    4. 4
      Steven P.
      68
    5. 5
      FloatingFatMan
      63
  • Tell a friend

    Love Neowin? Tell a friend!