CR: Bug 244016: Clicking "..." on a device control after encoding can cause a

[email protected]
Newsgroups gmane.comp.multimedia.helix.devel
Message-ID <[email protected]>
Synopsis
========
Bug 244016: Clicking "..." on a device control after encoding can cause a
SDK error or unhandled exception.

Branches: PRODUCER_13_0_RN and HEAD.
Suggested Reviewer: Anyone.


Description
===========
Noticed additional issue after previous fix.

1. Certain capture dialogs cannot be displayed when preview is running.
Fix was to attemp to Launch Capture dialog, if that failed then stop input
and Launch Capture Dialog and start input.

2. After Launching dialogs there was check for checking if job is ready to
run.
This is done by serializing job to buffer and recreating it from buffer,
this results in video graph in capture filter failing to start.
I am unable to determine reason for failure. Same call is not causing any
issues when a new job is loaded. I am logging a new bug for this.
Down side is if user set invalid argument through capture dialog job will
still indicate it is ready to run though could fail when start encoding is
called.

3. Noticed additional issue that GUI is not re-reading the job after
Launch Dialog call.
Capture size is modified by dialog and is applied to job, but when start
encoding is called GUI passes initial job which does not have capture
size.


Files Affected
==============
client/encodesvc/activex/ctrl/ProducerCtrl.cpp

Testing Performed
=================
Tested capture dialogs.

Performance Tests:
- None

Platforms Tested: win32-i386-vc7
Build verified: win32-i386-vc7

QA Hints
========
Please also test on machine with multiple capture cards.

Index: ProducerCtrl.cpp
===================================================================
RCS file: /cvsroot/client/encodesvc/activex/ctrl/ProducerCtrl.cpp,v
retrieving revision 1.3.2.2
diff -u -r1.3.2.2 ProducerCtrl.cpp
--- ProducerCtrl.cpp	23 Jun 2009 06:20:41 -0000	1.3.2.2
+++ ProducerCtrl.cpp	25 Jun 2009 03:02:03 -0000
@@ -1828,9 +1828,6 @@

     res = LoadDeviceDialog( AUDIO_DEVICES, ulDeviceID, bstrDialogName );

-    //Job could have changed by the device dialog, hence reset the
IsReady flag.
-    SetJobIsReadyFlag();
-
     return res;
 }

@@ -1858,9 +1855,6 @@

     res = LoadDeviceDialog( VIDEO_DEVICES, ulDeviceID, bstrDialogName );

-    //Job could have changed by the device dialog, hence reset the
IsReady flag.
-    SetJobIsReadyFlag();
-
     return res;
 }

@@ -1949,12 +1943,19 @@

     if (SUCCEEDED(res))
     {
-	pDialogCtrl->LaunchDialog( iDialogID, m_hWnd);
+	res = pDialogCtrl->LaunchDialog( iDialogID, m_hWnd);
+	if (FAILED(res))
+	{
+	    stopInput();
+	    res = pDialogCtrl->LaunchDialog( iDialogID, m_hWnd);
+	    startInput();
+
+	}
     }
+

     HX_RELEASE(pDialogCtrl);

-
     return res;
 }

@@ -2573,9 +2574,6 @@
         m_PreviewViewer.StopPreview();
         m_PreviewViewer.SetJob(NULL);

-        //UpdateCodecsInJob() might have modified job IsReady status.
-        res = SetJobIsReadyFlag();
-
         // Set the new job, and setup the new previews
         if (SUCCEEDED(res))
         {
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.